2011-02-16 1 views
0

소스 파일에 targetlibs = Lib.lib가있는 A.cpp 파일이 있습니다. Lib.cpp는 C_defines = -DSomething으로 컴파일되었지만 A.cpp는 C_defines = -DOther로 컴파일됩니다. Lib.pp에는 -DSomething 및 -DOther에 대해 #ifdefs가 포함되어 있습니다.lib에 링크 된 소스 코드의 컴파일러 정의가 lib를 변경합니까?

이 경우 어떻게됩니까? 그렇습니다 - 뭔가 다른 것을 지키거나 대체합니까? -D 나머지는 무시합니까? 또는 둘 다 보관됩니까? 감사합니다

답변

1

정의는 컴파일 타임에 영향을 미칩니다. 따라서 라이브러리 코드에는 무엇인가가 유지되고 프로그램 코드에는 -D 기타가 유지됩니다. Lib의 헤더 (예 : Lib.h)가 A.cpp에 포함되어 있으면주의해야합니다. 헤더 코드에도 -DOther가 사용됩니다. 이는 A.cpp와 같은 컴파일 단위에 있기 때문입니다.