c - 宏依赖宏

标签 c gcc macros c-preprocessor

是否可以这样做:

  #define F(x) \
    #ifdef DOUBLE \
      2*x \
    #else \
      x \
    #endif

所以当我使用 F 时,它扩展到什么取决于是否定义了宏 DOUBLE?我不这么认为,但我充满希望。 GNU 扩展很好。

编辑 作为对一些答案的回应,我真的用它来生成一些代码,其中代码根据定义的位置而略有不同。由于包含某些文件的顺序以及需要定义相关宏的位置,以这种方式切换它需要一些因素。我可能不得不这样做,但如果我不必从这个角落卸掉自己的油漆,我会很高兴!

最佳答案

怎么了

#ifdef DOUBLE
  #define F(x) (2 * (x))
#else
  #define F(x) (x)
#endif

关于c - 宏依赖宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4927976/

相关文章:

c - 为什么位字段的类型会影响包含结构的大小?

c - 如何定义描述内存位置的宏?

c - glibc strlen() 实现的工作原理

c - Linux内核读取函数

c - C 打印字符串的速度

c - printf ascii char % 有时会给出 c 而不是 %

c++ - 在重载的 << 运算符中使用 << 运算符

c - 在 GCC 中链接 libssl 和 libcrypto

javascript - 运行 share/scripts/javascript 命令行宏

C 宏 : get smallest type for an integer constant