1. 程式人生 > >Gcc 編譯時指定巨集

Gcc 編譯時指定巨集

gcc 編譯指定巨集

那在makefile裡面
gcc -DMACRONAME=MACRODEF
或者
gcc -DMACRONAME
這樣就定義了預處理巨集,編譯的時候可選程式碼就會被編譯進去了。
舉例說明:
-Dmacro=string,等價於在標頭檔案中定義:#define macro string。
-DTRUE=true,等價於在標頭檔案中定義:#define TRUE true
-Dmacro,等價於在標頭檔案中定義:#define macro 1,實際上也達到了定義:#define macro的目的。
-DLINUX,等價於:#define LINUX 1(與#define LINUX作用類似)。
–define-macro macro=string與-Dmacro=string作用相同。

Qt pro檔案中示例

原程式

#include <iostream>

using namespace std;

int main()
{
#ifdef DEF
    cout<<"abc"<<endl;
#else
    cout<<"xyz"<<endl;
#endif
    return 0;
}

pro檔案

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp

QMAKE_CXXFLAGS
+= -DDEF

編譯輸出

g++ -c -pipe -fno-keep-inline-dllexport -DDEF -g -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG

執行結果

這裡寫圖片描述