Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2009, 20:30   #1
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
По умолчанию общая переменная для 2х cpp файлов

и очередной вопрос
есть некий массив ar который нужен 2м cpp файлам.
как его так втыкнуть в хедер или как-нить еще чтоб при линковке небыло multiple definition?

вот пример такой программы:
a.cpp
Код:
#include "c.h"

int f1(int k)
{
  static int jj;
  jj=k*ar[0][0];
  return jj-1;
}
b.cpp
Код:
#include "c.h"

int main()
{
  f1(ar[1][0]);
  return 0;
}
c.h
Код:
#ifndef w
#define w

char* ar[]={"123","456","789"};

int f1(int k);

#endif //w
консоль:
Код:
$ g++ *.cpp
блаблабла про deprecated conversion from string constant to ‘char*’
/home/roma/tmp/ccTAj8Nt.o:(.data+0x0): multiple definition of `ar'
/home/roma/tmp/ccbj7fol.o:(.data+0x0): first defined here
collect2: выполнение ld завершилось с кодом возврата 1

Последний раз редактировалось Роман Радер; 22.07.2009 в 20:42.
Роман Радер вне форума Ответить с цитированием
Старый 22.07.2009, 21:02   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

В хедере написать: extern char* ar[];
А в одной сипипишке (например, a.cpp) уже то, что сейчас в хедере у вас написано.
pu4koff вне форума Ответить с цитированием
Старый 22.07.2009, 21:04   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

либо описывай статическую переменную char *ar[] в своем заголовочном файле, либо используй спецификатор extern, чтобы ОПРЕДЕЛИТЬ свою переменную в заголовочном файле, потом ГДЕ УГОДНО ГЛОБАЛЬНО ОПИШИ свою переменную (инициализировав значениями, в твоем случае - указателями на строки), и можешь использовать ее везде, где подключишь свой заголовочный файл. я бы использовал именно extern. кстати, в случае с функцией я бы поступил точно так же

-------
хы, немного не успел)
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 22.07.2009, 21:19   #4
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
По умолчанию

спасибо всем
Роман Радер вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Общая переменная и процедура для двух форм? Polotenchik Общие вопросы Delphi 2 19.07.2009 12:20
Общая переменная Артэс Общие вопросы C/C++ 4 18.06.2009 16:24
Общая переменная для нескольких экземпляров программы. Fabio Общие вопросы Delphi 9 24.02.2009 09:25
Общая переменная для различных обработчиков событий Mike_new Общие вопросы .NET 3 29.12.2008 16:43
Общая переменная А.Брей Помощь студентам 2 20.05.2007 18:13