【发布时间】:2018-11-06 11:27:32
【问题描述】:
由于预处理器在检查未实际定义的预处理器符号的值时不会报告错误(通常是由于缺少#include“some_header.h”),所以我使用这种繁琐的三行构造和“定义” :
#if !defined(SOME_SYMBOL)
#error "some symbol isn't defined"
#endif
#if SOME_SYMBOL == 1
// Here is my conditionally compiled code
#endif
和“#ifndef”的方式是一样的。
有没有更优雅的方式来执行此检查?
【问题讨论】:
-
不,那和
#ifndef是检查是否定义了宏的唯一方法。 -
视情况而定。 this Q&A 您可能会觉得适用。
-
@StoryTeller 所以那里是这些赞成票的来源;) -- @OP:
SOME_SYMBOL总是定义为整数吗? -
顺便说一句,如果
SOME_SYMBOL未定义#if SOME_SYMBOL == 1将评估为假。此上下文中未定义的符号被视为 0。
标签: c++ c-preprocessor