2014-10-01 1 views
-3

여러 헤더 파일 .h과 그에 해당하는 .cpp 파일이 있습니다. 여기에 선언을 위해 part1.hpart2.h이 있다고 가정합니다. 해당 cpp은 기능 정의에 대해 part1.cpppart2.cpp입니다.이 변수는 어떻게 정의해야합니까?

나는 또한 main과 파일이 있습니다. 이 주요 함수에서 변수는 float * change입니다. 이름으로 change 값을 변경 한 다음 및 G에 정의 된 F 함수를 part2.cpp에 호출합니다. 문제는 매개 변수로 change을 전달할 수 없다는 것입니다. 처음에는 전역 변수로 정의 할 계획입니다. 그런데이 변수가 항상 변하는 것을 발견했습니다. 그러나 전역 변수 만 정의 할 수 있습니다. 그래서이 문제를 해결할 수있는 방법이 있습니까?

미리 감사드립니다.

+0

이 변수는 항상 변경됩니까? 그게 무슨 뜻이야? – Deduplicator

+0

@Deduplicator, 죄송합니다. change = (float *) malloc (1024); '항상 변경'은 처음에는 'change [1] = 10;'을 의미합니다. 그러나 다음은'change [1] = 100;' – Vivian

답변

2

당신은 당신의 .cpp 파일 중 하나에서 다음

float* change; 

중 하나에 정상적으로 변수를 정의 할 수 있습니다 "// 전역 변수 당신이 할 수있는 사람들을 피를"당신의 헤더 파일은 다음과 같이 선언 할 수 있습니다.

extern float* change; 

이제 전역 변수가 사용될 때마다 헤더 파일을 # 포함하십시오.

+0

Hello입니다. 'global.h'를 사용하고'extern float * ptr'과 같은 것을 씁니다. 그리고 ptr을 주 기능으로 정의합니다 !!! 나는 그것을 사용하는 모든 파일에 "global.h"를 ​​포함시킨다 (part1.cpp; part1.h; main.cpp). 하지만 '오류 lnk2001 해결되지 않은 외부 기호'오류가 있습니다. 어떻게 해결해야할까요? – Vivian

+0

안녕하세요. 나는 그것을 해결했다. 나는 main 함수 밖에서'float * ptr'과 같은 것을해야합니다. 그런 다음 오류가 사라졌습니다. 이게 옳은 거니? – Vivian

+0

@Vivian 예, 맞습니다. 전역 변수는 모든 함수 외부에 있어야합니다. 'main()'에 변수를 선언하면 전역이 아닌 지역 변수가됩니다. –

1

당신은 또한 part1.cpp 대신 공통 헤더의 part2.cpp에서 직접이를 선언 할 수

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

당신의 헤더 중 하나에 선언합니다. 그러나 나중에 뭔가를 변경하고 예를 들어 두 배로 늘리면 그 선언을 잊어서는 안됩니다.

Stroustrups 유명한 인용 기억 -

관련 문제