回答
由于这是目前写的,很少有可能有意义使用它,除非你只想处理基础上的X
值假案。
恕我直言,你可以把它重新写成
#define IS_THIS_CORRECT(X) if(X)
然后,你可以使用它像
int p = 5;
IS_THIS_CORRECT(X)
{
printf("yay !!!\n");
}
@ForceBru感谢编辑。 :-) –
我猜测,但只有这样,这使得任何意义,我是如果它应该被用作
IS_THIS_CORRECT(foo) else { do_something(); }
尽管如此,仍然很奇怪。
非常感谢您的意见。 – user3593776
#define IS_THIS_CORRECT(X) if(X){}
它可以用来检查是否X
(任意值)不为零,或者不是一个空字符串等,你可以做以下
IS_THIS_CORRECT("Hello")
else puts("The string is empty");
你最好环绕X
与另一一对大括号更多的安全性:
#define IS_THIS_CORRECT(X) if((X)){}
我建议你到这个预处理语句重命名为IT_IS_CORRECT
甚至IS_CORRECT
为更可读性。
额外的括号似乎是一个坏主意。 'X'已经括号了,所以添加它不是必须的,但是会使用通用编译器来压制'IS_THIS_CORRECT(foo = bar)'的有用编译器警告。 – Wintermute
@Wintermute,我只是关注K&R的解决方案。据我所知,他们总是说,必须将这些额外的大括号添加到预处理语句中,如#define add(x,y)(x)+(y)'。尝试删除大括号并执行'add(5 + 7,10 + 2)' – ForceBru
这大部分都是如此,但是在if(X)中已经有一对圆括号做这项工作,这些圆括号意味着:确保'X'被视为一个单一的实体。 (不好的例子,顺便说一下,使用'mul'宏可以更好地工作)。 – Wintermute
- 1. Testrun预处理器语句
- 2. 如何使用IN子句使用PDO预处理语句?
- 3. ParseKit - 如何正确处理预处理器语句?
- 4. 使用fmdb打印预处理语句
- 5. 使用多个PDO预处理语句
- 6. mysqli_fetch_array(),预处理语句和LIKE语句
- 7. 如何在标记参数中使用句点以便PDO预处理语句?
- 8. 自动缩进预处理器语句
- 9. 预处理语句与
- 10. 预处理语句执行
- 11. 如何用if语句替换预处理器宏?
- 12. 如何在C++中使用预处理器指令的帮助下在语句之间插入语句?
- 13. 如何使用预处理语句在mysql中增加一列?
- 14. 如何在Mysqli中使用fetch_array与预处理语句?
- 15. 如何使用预处理语句插入到SET类型PHP
- 16. 如何在PHP中使用mysqli预处理语句?
- 17. 是否可以使用mysqli_fetch_object和预处理语句
- 18. 预处理语句不起作用
- 19. 用于多语句函数的C预处理器语法?
- 20. 如何使用C++宏预处理器生成有效的include语句?
- 21. 是否可以使用C预处理器检查已定义语句的值?
- 22. SQL使用JDBC 1064语法错误预处理语句
- 23. 如果将使用PHP PDO预处理语句
- 24. 如何在java中正确调用预处理语句
- 25. 预处理语句 - 在列表
- 26. PDO预处理语句问题
- 27. 预处理语句 - 迭代查询
- 28. SQL注入和预处理语句
- 29. 错误而JDBC预处理语句
- 30. 可变列的预处理语句
这不是一个函数 – ForceBru