想象一下C预处理器块:
#if defined( NAME )
...
#else // comment-else
...
#endif // comment-endif
这些块可能非常庞大且令人困惑。
为了澄清意图和行为,您如何编写 comment-else 和 comment-endif 作为NAME的表达?
注意:我应该补充一点,我对组合表达式和嵌套的更复杂的情况特别感兴趣。
答案 0 :(得分:12)
#if defined(NAME)
#else // defined(NAME)
#endif // defined(NAME)
如果在整个来源中使用,则完全明确。
答案 1 :(得分:6)
ERM ..
#if defined( NAME )
...
#else // NAME
...
#endif // NAME
不能比那更明显......
答案 2 :(得分:2)
#if defined(NAME)
...
#else
// !defined(NAME)
...
#endif // defined(NAME)
因为我不希望#else // condition
看起来像#elif condition
一样远。我知道,语法着色解决了这个问题(至少它可以解决C预处理器语法比SO的语法着色更聪明),当然我也使用语法着色。仍然。
答案 3 :(得分:2)
如果您将“大而复杂”的代码重构为单独的函数,您可以轻松地立即查看整个部分。
#if defined NAME
do_something_for_name();
#else
do_something_without_name();
#endif
真的不需要任何特殊的评论约定,是吗?
答案 4 :(得分:1)
#if defined( NAME )
...
#else /* Else part of NAME */
...
#endif /* End of NAME */
我就是这样做的。
在阅读/浏览代码时(假设您在Linux中使用VIM编辑器),我们% (Shift + 5)
从#if
跳转到#else
和{ {1}}很容易。