美文网首页
C语言中预编译指令

C语言中预编译指令

作者: 悟2023 | 来源:发表于2017-02-06 10:39 被阅读33次
  • 基本预编译指令
    #include 将指定头文件嵌入源文件中。
    #define 宏定义
  • 条件预编译指令 (#ifdef#else#endif#if
    #define XXX y
    情景一:
#ifdef XXX
    NSLog(@"程序_1");
#else
    NSLog(@"程序_2");
#endif
//这表明如果标识符XXX已被#define命令定义过则对程序_1进行编译;否则对程序_2进行编译。

情景二:

#ifndef XXX
    NSLog(@"程序_1");
#else
    NSLog(@"程序_2");
#endif
//这表明如果标识符XXX没有被#define命令定义过则对程序_1进行编译;否则对程序_2进行编译。

情景三:

#if 常量
    NSLog(@"程序_1");
#else
    NSLog(@"程序_2");
#endif
//这里表示,如果常量为真(非0,随便什么数字,只要不是0),就执行程序_1,否则执行程序_2。

情景四:

#ifdef DEBUG
    NSLog(@"程序_1");
#else
    NSLog(@"程序_2");
#endif
//如果是debug环境执行程序_1,否则执行程序_2。
#if TARGET_IPHONE_SIMULATOR
     NSLog(@"程序_1");
#else
    NSLog(@"程序_2");
#endif
//如果是模拟器环境执行程序_1,否则执行程序_2。

情景五:

#ifdef TEST
    //程序调试运行时绕过此语句
    NSLog(@"程序_1");
#else
    NSLog(@"程序_2");
#endif
//避开硬件的限制。有时一些具体应用环境的硬件不一样,但限于条件,本地缺乏这种设备,于是绕过硬件,直接写出预期结果

#ifdef和#if defined之间的区别

两者的用法基本上一样,不过后者的应用范围更大,可以支持多个预编译变量的检查:

#if (!defined(_DEBUG) && defined(USE_MYLIB))
  ..........
#endif

更多相关信息请查看 Xcode 中 TargetConditionals.h 头文件

相关文章

网友评论

      本文标题:C语言中预编译指令

      本文链接:https://www.haomeiwen.com/subject/cppyittx.html