반응형
C++는 전처리기 기호를 정의하지 않고 디버그 기호로 컴파일하는지 여부를 확인합니다.
저는 이와 같은 것을 사용해 왔습니다.
int main(int argc, char *argv[])
{
#ifdef DEBUG
printf("RUNNING DEBUG BUILD");
#else
printf("Running... this is a release build.");
#endif
...
그러나 디버그 빌드를 위해 -DEBUG로 컴파일해야 합니다.GCC는 내가 확인할 수 있는 자체 전처리기 매크로를 정의하는 것과 같이 디버그 기호(-g 플래그)로 컴파일할 때를 결정할 수 있는 방법을 제공합니까?
대답은 아니오입니다.일반적으로 이러한 매크로(DEBUG, NDEBUG, _DEBUG)는 활성화된 구성(DEBUG/Release)에 따라 IDE/make 시스템에 의해 설정됩니다.다음과 같은 답변이 도움이 될 수 있다고 생각합니다.
제가 찾던 답은 본질적으로 아담이 댓글로 올린 것이라고 생각합니다.
컴파일러의 작업은 전처리를 포함하지 않으며, 실제로 컴파일러는 코드화되는 전처리기가 처리하지 않는 전처리기 스위치를 초크 처리합니다.
따라서 코드를 분기하는 방법은 전처리기를 활용해야 하기 때문에 컴파일러가 어떤 코드를 얻을 때쯤이면 이미 하나 또는 다른 하나(디버그 코드 또는 릴리스 코드)가 되므로 이 단계에서 (전처리기 이후) 제가 질문한 것을 수행하는 것은 불가능합니다.
따라서 코드를 전달하기 위한 별도의 프로세스로 프리프로세서가 설계되는 것은 직접적인 결과입니다.
언급URL : https://stackoverflow.com/questions/5223299/c-determine-if-compiling-with-debug-symbols-without-defining-a-preprocessor-sy
반응형
'programing' 카테고리의 다른 글
각진 소재:매트데이트 픽커:DateAdapter에 대한 공급자를 찾을 수 없습니다. (0) | 2023.10.15 |
---|---|
워드프레스 데이터베이스에서 외국키를 만드는 방법은? (0) | 2023.10.15 |
보내기 전에 사용하고 $.post로 완료하시겠습니까? (0) | 2023.10.15 |
libclntsh.so .12.1 : node-oracledb 샘플을 실행할 때 공유 개체 파일을 열 수 없음 (0) | 2023.10.15 |
Wordpress get_template_directory_uri가 하위 테마와 함께 작동하지 않습니다. (0) | 2023.10.15 |