2014-03-03 2 views
1

#define을 사용하는 방법이 혼란 스럽거나 사용하고자하는 것이 무엇인지 혼란 스럽습니다. 그것의 외부C에서 헤더의 "#define"사용

#define var  3; 

int foo(); 

...(etc) 

뿐만 아니라 두 개의 유사 구조 파일 :

#include "header.h" 

int main(int argc, char **argv){ 

    printf("%i", var); 
} 

내가있는 헤더에서 VAR을 사용할 수 있다는 생각에 나는 잘못된 건가요

나는 헤더 파일이 헤더를 포함하는 C 파일?

사실 숙제의 일부이며 헤더 파일을 변경할 수 없습니다. 이런 식으로 사용할 수 없다면 접근 자 함수가 아닌 다른 변수를 파일 외부에서 사용하는 방법이 있습니까?

#include "header.h" 

int main(int argc, char **argv){ 

    printf("%i", var); 
} 
+1

'#define var 3;은 끔찍하고 끔찍한 C (특히 끝에있는 세미콜론)입니다. 이것이 당신이 제공 한 코드라면 강사에게 불평해야합니다 ... – nneonneo

+1

'#define var 3;'생략하십시오. – wildplasser

+0

그러나 헤더 파일이 이상합니다. ';'다음에'3'이 있어서는 안됩니다. – timrau

답변

3

그냥에 세미콜론을 넣어하지 않습니다

#ifndef HEADER_FILE 
#define HEADER_FILE 

#define var 3 // <-- no semi 

#endif 

것은 이제 var을 정의하는 방법에 따라, 당신이 할 수 있어야한다 :

1

헤더 파일은 제대로 정의해야 정의 된 가치의 끝.

printf("%i", 3;); 

을 ... 즉 무효 코드 : 대신 인쇄 문은 전처리에 의해 다음에 확장 정의 당신과 함께

#define var 3 

사용

#define var 3; 

의. 전 처리기는 C/C++ 언어의 규칙을 실제로 존중하지 않습니다. 오히려 barbar 텍스트 대체 도구 일 것입니다. 아마도 C 언어 그 자체보다 훨씬 똑똑하지만 더 많은 수는 없을 것입니다 ...

하지 당신은 여전히 ​​

int my_variable = var 

을 말할 수있는 변화를 헤더를 허용 그리고 당신이 더 많은 것을 좋아하는 경우에 당신도 이전 문 뒤에 세미콜론의 수를 넣을 수 있습니다.