0
A
回答
0
是的这是正确的方法。
理想情况下你想要的宏扩展到一个单一声明,不一个复合声明。你的满足。
您可以安全地在if
,else
块中使用此宏。
1
是的。
虽然正确的方法是最经常没有任何类似功能的宏。
请注意,DO-而(0)诀窍是仅与马虎括号风格的代码库有关,如
if(x)
AB();
else
的DO-而(0)技巧将防止由于编译器错误流浪的分号,如果有以下else
声明。如果宏只使用大括号,你会得到if(){}; else
这是一个语法错误。
请注意,上述支架样式导致了历史上最昂贵的软件错误之一,称为Apple“goto-fail”错误。所以有很好的理由永远不要使用它。如果在每个语句后总是使用{}
,则do-while(0)技巧也变得无关紧要。
相关问题
- 1. 有没有办法在一个if语句中有多个值?
- 2. 一个SqlDataSource上的多个INSERT语句
- 3. 多个返回语句与多个goto语句:哪一个更好?
- 4. 语法错误:多个语句中找到在编译一个语句
- 5. IF,THEN语句在MySQL中有多个语句
- 6. Haskell中的多个语句
- 7. 在一个sql语句中更新多行中的多个列?
- 8. 多个case语句
- 9. 从多个语句
- 10. 多个re.sub()语句
- 11. if语句将所有语句分组为一个语句
- 12. 一个jQuery中多个语句的语法
- 13. where子句中的多个语句
- 14. if语句后的多个语句
- 15. 是否可以在单个sqlplus select语句中拥有多个CASE语句?
- 16. IF语句没有在另一个IF语句中的树枝
- 17. 单个SqlCommand中的多个语句
- 18. 多个执行语句,但只有一个是工作
- 19. SQL中的一个CASE语句的两个或多个结果
- 20. 使用多个'For'和'if'语句加速VBA宏
- 21. 当expect脚本中有多个“spawn”语句时,只有最后一个spawn语句被完全执行
- 22. SELECT语句的一个一对多一行的所有细节
- 23. MYSQL CASE THEN语句有多个值
- 24. 具有多个语句的JavaScript`if`
- 25. Xpath有多个谓词语句
- 26. 写有多个MySQL的语句连接
- 27. 排序方式有多个CASE语句
- 28. MySQL ConnectorJ具有多个SQL语句
- 29. SQLite中一个查询中的多个Select语句
- 30. 加入两个sql SELECT语句,其中一个有单个记录,另一个有多个记录
宏只是文本替换。我不认为这个问题是有道理的。您通常不会在宏中有*,因为宏不是一个语法单位。 –
现在取决于你想如何使用宏 –
这个宏的优点是可以将函数调用写成函数调用,即'AB();' –