学了大概一年多的C了,怎么之前没听过呢?
逗号表达式在下面这个宏里面很有用。我甚至不知道要是不用它,有没有什么好的替代。
#define LOGF (fprintf(stderr, "[%s %s:%d]: ", __func__, __FILE__, __LINE__), printf)
比如:
#include <stdio.h>
#define LOGF (fprintf(stderr, "[%s %s:%d]: ", __func__, __FILE__, __LINE__), printf)
int foo(int x) {
LOGF("x = %d\n", x);
}
int main() {
LOGF("Hello, %s!\n", "world");
foo(42);
}
运行:
$ ./a.out
[main a.c:9]: Hello, world!
[foo a.c:5]: x = 42
1 回答1.4k 阅读
1 回答1.1k 阅读
1 回答919 阅读
868 阅读
812 阅读
730 阅读
674 阅读
这一行不是“小括号运算符”,是逗号运算符,括号只是限制优先级的
所以输出是4