【发布时间】:2013-08-20 01:37:10
【问题描述】:
当函数没有任何参数时,可以通过define as 不带括号调用它
#define test test()
是否可以调用带有参数而不带括号的函数?类似的东西
#define test test(char *arg)
test "argument 1";
【问题讨论】:
-
你为什么要这样做?
-
函数优先级的规则是:
foo x + bar yfoo(x) + bar(y)还是foo(x + bar(y))?无论哪种方式,我都 99% 确定在纯 C 语言中无法做到这一点。 -
可能不在 C 中,但在 C++ 中可以将
test定义为std::stringstream() <<,其中紧随其后的字符串参数将被发送到其operator <<。 -
用 C 开发高级语言和试图将 C 变成高级语言之间有很大的不同。伪装的 C 仍然是具有所有缺陷的 C,并且重新排列函数调用构造以模仿其他语言使用的样式不会改变这一点。如果您需要高级语言,请使用高级语言。
-
C + 预处理器宏!= 一种高级语言。它是低级系统语言和低级文本处理语言的结合,具有两者的所有问题。