2014-10-01 4 views
-3

У меня есть несколько файлов заголовков .h и их соответствующие файлы .cpp. Здесь предположим, что у меня есть part1.h и part2.h для объявления. Соответствие cpp: part1.cpp и part2.cpp для определения функций.Как определить эту переменную?

У меня также есть файл с main. В этой основной функции у меня есть переменная float * change. В качестве своего имени я изменю значение change, а затем вызову функцию F, определенную в part1.cpp и G в part2.cpp. Проблема в том, что я не могу передать change в качестве параметра. Итак, сначала я планирую определить его как глобальную переменную. Но затем я обнаружил, что эта переменная всегда изменяется. Но глобальная переменная может быть определена только один раз. Итак, есть ли способ решить эту проблему?

Заранее спасибо.

+0

Эта переменная всегда меняется? Что ты имеешь в виду? – Deduplicator

+0

@Deduplicator, Извините за это. change = (float *) malloc (1024); «Всегда изменения» означает «изменить [1] = 10;» сначала. Но в дальнейшем существует «change [1] = 100;' – Vivian

ответ

2

Вы можете определить переменную как обычно в одном из ваших .cpp файлов

float* change; 

Тогда в одном из ваших файлы заголовков, вы можете заявить об этом:

extern float* change; 

Теперь #include заголовочный файл везде, где используется глобальная переменная.

+0

Hello. Я использую 'global.h', и я пишу что-то вроде' extern float * ptr'. И я определяю ptr в основной функции !!! Я включаю «global.h» в каждый файл, который я использую (part1.cpp; part1.h; main.cpp). Но есть ошибка 'ошибка lnk2001 неразрешенный внешний символ'. Не могли бы вы рассказать мне, как мне его решить? – Vivian

+0

привет. Я решил это. Я должен сделать что-то вроде 'float * ptr' вне основной функции. Тогда ошибка исчезла. Это правильно? – Vivian

+0

@Vivian Да, это правильно. Глобальная переменная должна быть вне всех функций. Когда вы объявляете переменную в 'main()', она является локальной, а не глобальной. –

1

Признаться в одном из ваших заголовков

extern float * change; // does not define the variable, but just that it exists somewhere 

Вы также можете указать это прямо в part1.cpp и part2.cpp вместо обычного заголовка. Однако, если вы потом что-то изменили, поплавок, чтобы удвоить, например, вы не должны забывать ни одну из этих деклараций.

Помните Stroustrups известную цитату: «// глобальная переменная - избегать тех, где вы можете»