나는 최근에 "extern"키워드의 사용이 적극 권장됨을 알게되었습니다."extern"키워드없이 헤더 파일에 변수를 선언 할 때 단점이 있습니까?
을 main.c :
#include "main.h"
#include "function.h"
int main(void){
globalvariable = 0;
testfunction();
return 0;
}
main.h :
#ifndef MAIN_H_
#define MAIN_H_
int globalvariable;
#endif /* MAIN_H_ */
따라서 나는 현재 (통근없는) 방식에 문제가 아무것도 내가 헤더 파일을 사용할 수있는 경우 궁금해하기 시작했다 function.c :
#include "main.h"
#include "function.h"
void testfunction(){
globalvariable++;
return;
}
function.h :
#ifndef FUNCTION_H_
#define FUNCTION_H_
void testfunction(void);
#endif /* FUNCTION_H_ */
따라서 전역 변수에 액세스해야하는 모든 새 소스 파일에는 main.h가 포함되어야합니다.
이 방법의 한 가지 명백한 단점은 배열입니다. {element0, element1, ...} 형식을 사용하여 선언 된 배열에 값을 할당 할 수 없습니다.
덧붙여서 글로벌 변수에 0의 초기 값을 지정하면 그 시점에서 정의 할 수 있습니까? 아니면 이전에 할당 된 메모리입니까?
또한 내가 사용하는 공식적인 용어가 있습니까?
'extern' 키워드는 권장되지 않습니다. 절대적으로해야 할 때만 사용해야합니다. –
http://stackoverflow.com/questions/1433204/what-are-extern-variables-in-c – cnicutar
[글로벌 변수가 잘못되었습니다.] (http://c2.com/cgi/wiki?GlobalVariablesAreBad). –