通过改变宏的值进行条件编译

标签 c compilation macros conditional-statements

我想用条件编译来编译一个程序,而不需要重新定义宏,例如

#include <stdio.h>
#define X 1
int main ()
{
    #ifdef X
    printf("HI\n");
    #else
    printf("Hello\n");
    #endif // X
    return 0;
}

如果我将宏的值更改为 0,则 else 部分不会被执行,而是单独执行 if 部分,如果我单独更改宏或 if 语句,则 else 部分将被编译,我的问题是,有没有办法通过读取宏的值来条件编译?

最佳答案

你想要的是#if

#if X
printf("HI\n");     // will be compiled if X is anything but 0
#else
printf("Hello\n");  // will be compiled if X is 0
#endif // X

关于通过改变宏的值进行条件编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53349698/

相关文章:

c++ - 宏返回值

c++ - 如何正确链接子目录中的静态库?

c - 如何将输入添加到数组并在用户输入字符串 'stop' 时停止?

统计一个C函数执行了多少次

c - 对文件系统的非阻塞访问

.net - 将 .NET 项目编译为独立 native 二进制文件的可用工具有哪些?

opencv - 错误:CvANN_MLP没有命名类型

macros - 在 Clojure 宏中引用基于 ~ 和 ~@ 的选择

scala - Scala 中所有函数的父类(super class)型是什么?

c - __SOCKADDR_COMMON (sin_) 是什么意思?