main.c 文件

//
//  main.c
//  tempTestForC
//
//  Created by cbd on 16/8/17.
//  Copyright © 2016年 cbd. All rights reserved.
//

#include "apue.h"

int main(int argc, const char * argv[]) {

#if defined _FUNC_TEST_DEF
    printf("已经定义了 _FUNC_TEST_DEF:%d \n", _FUNC_TEST_DEF);
#else
    printf("还没有定义 _FUNC_TEST_DEF  \n");
#endif

    return 0;
}

在编译的时候可以用-D方法指定功能测试宏(Feature Test Marco)的值

$ gcc -D_FUNC_TEST_DEF=1 main.c -o a.out
$ gcc -D_FUNC_TEST_DEF=0 main.c -o b.out
$ gcc -o c.out
$ gcc -D_FUNC_TEST_DEF=012 main.c -o d.out

测试结果

$ ./a.out
已经定义了 _FUNC_TEST_DEF:1

$ ./b.out
已经定义了 _FUNC_TEST_DEF:0

$ ./c.out
还没有定义 _FUNC_TEST_DEF

$ ./d.out
已经定义了 _FUNC_TEST_DEF:10

注意

  1. _FUNC_TEST_DEF 是自定义的, 有一些已经约定好的 见这里
  2. GCC命令中, -D_FUNC_TEST_DEF之间就是没有空格