将#elif 与#ifdef 一起使用是否合法?

新手上路,请多包涵

谷歌无法帮助我解决的一个简单问题。在 --- 的上下文中使用 #ifdef #elif 子句在 C++ 中是否合法?它似乎可以在 c++11 模式(MSVC 2015/2017,clang,GCC)中按预期编译和工作,但我不确定它是否符合标准。

原文由 Violet Giraffe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 680
1 个回答

Yes, the grammar allows an #elif after preceding, matching #if , #ifdef or #ifndef :

_如果部分_:

if-group elif-groups opt else-group opt endif-line

_如果组_:

# if 常量表达式 换行 选择

# ifdef 标识符 换行 选择

# ifndef 标识符 换行 选择

请注意, #ifdef(X) 只是 #if defined(X) 的缩写,而 #ifndef(X)#if ! defined(X) 的缩写

原文由 Kerrek SB 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题