MSDN문서를 보면.. 전처리 단계에서 중복된 해더파일을 한번만 인클루딩시킨다는 뜻으로 나와있고..
어디 책에서 읽은 기억으로 알고 있기론, 해더 파일이 중복되면, C처럼 1번만 처리라고 알고 있습니다.
제가 궁금한점은 C스타일이 뭔지.. C++과 해더파일 처리하는 방식이 다른가요?
또 하나 궁금한점은.. DXUT.h 파일을 보면 첫번째 줄에..
#pragma once
#ifndef DXUT_H
#define DXUT_H
라고 나와있습니다.
위에서 어차피 #pragma once도 중복된 해더파일을 1번만 처리하는 거고,
#ifndef DXUT_H도 한번만 처리할려는 목적으로 저리 해놓은 뜻일텐데..
왜 2번에 걸쳐서 중복된 역할을 하는 소스가 있는지 궁금합니다.
아.. 그리고, 평소 궁금한점인데.. static 전역변수는 뭔 뜻인가요?
가끔 소스보면 전역변수를 static으로 선언해 놨던데, -_-;;
그냥 보통 전역변수랑 라이프영역이나, 접근영역등에 무슨 차이가 있는지 궁금합니다.
그럼에도 굳이 #pragma once를 사용한 이유는 http://www.gpgstudy.com/forum/viewtopic.php?t=7263&highlight=pragma+once 를 참조하시구요.
static 전역 변수는 internal linkage를 가집니다. 즉 해당 파일에서만 참조가 가능합니다..만, 이전 C에서 사용되던 방식이고 C++ 표준에서는 보장되지 않습니다.
internal linkage가 요구될 때는 static 전역 변수 대신 unnamed namespace를 사용하시면 됩니다.