gcc -D 或在Makefile裡的 CFLAGS = -Dabc=$(B)

還記得剛接觸gcc與makefile的時候
一度看不懂Makefile裡面的-Dabc之類的字眼

其實說破就不值錢
原理來自於:

$ gcc -Dname=definition

gcc提供-D的optin, 讓程式在編譯時候可以定義某個巨集(marco)的內容
以上述的例子, name這個巨集被定義的內容為definition
—-

這個例子也很好懂:

gcc -D option flag

gcc -D defines a macro to be used by the preprocessor.

Syntax

$ gcc -Dname [options] [source files] [-o output file]
$ gcc -Dname=definition [options] [source files] [-o output file]

Example

Write source file myfile.c:
// myfile.c
#include <stdio.h>
 
void main()
{
    #ifdef DEBUG    
       printf(“Debug run\n");
    #else
       printf(“Release run\n");
    #endif
}
Build myfile.c and run it with DEBUG defined:
$ gcc -D DEBUG myfile.c -o myfile
$ ./myfile
Debug run
$
Or build myfile.c and run it without DEBUG defined:
$ gcc myfile.c -o myfile
$ ./myfile
Release run
$

發表迴響