【发布时间】:2013-06-18 17:18:07
【问题描述】:
我在标题中选择了一些用户可编辑的#defines,因此我随后希望检查这些定义是否存在,以防用户完全删除它们,例如
#if defined MANUF && defined SERIAL && defined MODEL
// All defined OK so do nothing
#else
#error "User is stoopid!"
#endif
这工作得很好,但是我想知道是否有更好的方法来检查多个定义是否到位......例如:
#ifn defined MANUF || defined SERIAL ||.... // note the n in #ifn
或许
#if !defined MANUF || !defined SERIAL ||....
消除对空 #if 部分的需要。
【问题讨论】:
-
仅供参考:
defined是一个像函数一样被调用的运算符(就像sizeof一样。所以如果你像函数一样调用它,你的例子就可以正常工作。另外 - 你可以使用大多数预处理器语句中的逻辑运算符(==、!=、!、||、&&)也是如此。 -
布尔代数的一个通用原理,可以将
!(x && y)替换为(!x || !y)。 en.wikipedia.org/wiki/De_Morgan%27s_laws
标签: c c-preprocessor