나는 C가 처음이다. 나는 샘플 코드를 포함하여 C의 "파일 범위"를 설명하는 책을 가지고있다. 그러나 코드는 파일 범위 변수 만 선언하고 초기화합니다. 예를 들어 불법적 인 방식으로 변수에 액세스하려고 시도하여 변수 범위를 확인하지 않습니다. 그래서! 과학 정신으로 실험을했습니다.C에서 전역 변수의 범위를 선언 된 파일로 어떻게 제한합니까?
파일 bar.c
:
static char fileScopedVariable[] = "asdf";
파일 foo.c
:
#include <stdio.h>
#include "bar.c"
main()
{
printf("%s\n", fileScopedVariable);
}
내 책에 따르면
, 구글에, printf()
에 대한 호출이 실패 -하지만 그렇지 않습니다. foo.exe
은 "asdf"문자열을 출력하고 정상적으로 종료됩니다. 나는 파일 스코핑을 사용하고 싶다. 내가 뭘 놓치고 있니?
static 'file scoped'로 정의 된 변수를 호출하는 것은 잘못된 이름입니다. #included 파일을 모두 재귀 적으로 붙여 넣은 결과로 단일 번역 단위로 제한됩니다. – Eric