c - 如何编写使用#ifdef 的宏函数

标签 c gcc macros

可以这样写吗?

#define ISWINDOWS() (#if defined(_WIN32) || defined(_WIN64) \
                        1 \
                   #elif  \
                        0 \
                  #endif)

然后:

void foo() {
  if(ISWINDOWS()) {
   // ..
  } else {
   // ...  
 }
}

最佳答案

您不能在宏中定义宏。您可以这样做,但这可能不是您想要的:

#if defined(_WIN32) || defined(_WIN64)
    #define ISWINDOWS() 1
#elif 
    #define ISWINDOWS() 0
#endif

关于c - 如何编写使用#ifdef 的宏函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10770892/

相关文章:

c - 如何设计循环数列(增量)?

C:结构和数组 - 概述和需要的帮助

c - union size 不是采用最大尺寸的数据类型?

使用 H.248 SCTP 负载创建 pcap 数据包

c - (GCC) printf 格式字符串中的美元符号

visual-studio-2010 - 如何在VS2010后期构建步骤中添加双引号

c++ - 跨平台对 'thread_local' 的支持现状如何?

linux - 使用os161 mips编译的gdb-7.8的链接错误

file - 在其他命名空间中应用宏

c - 强制宏在 2 个标记之间放置一个空格