3
A
回答
4
C有一个有趣的怪癖,它连接字符串文字。如果你输入
"DEBUG %s:%d: " "HELLO %s!" "\n"
然后编译器将这看作是一个字符串:"DEBUG %s:%d: HELLO %s!\n"
。因此,用户可以使用这个宏就好像根本就printf的参数:
debug("HELLO %s", username); //on line 94 of myfile.cpp
和宏将自动添加文件名和行号。这种格式非常有用,因为它可以帮助您知道哪些调试语句正在记录信息。
DEBUG myfile.cpp:94: HELLO zell
2
字符串在C中自动连接在一起。“Hello”“World!”与“Hello World!”相同。
DEBUG("An error occurred opening file %s", filename)
扩展为:
fprintf(stderr, "DEBUG %s:%d: An error occurred opening file %s\n", __FILE__, __LINE__, filename)
这一点我想你会同意是非常方便的和正确的结果。
3
debug("This should never happen!");
评估为
fprintf(stderr, "DEBUG %s:%d: " "This should never happen!" "\n", __FILE__, __LINE__, ##__VA_ARGS__)
其中串接到...
fprintf(stderr, "DEBUG %s:%d: This should never happen!\n", __FILE__, __LINE__, ##__VA_ARGS__)
所以它打印像...
DEBUG foo.c:51: This should never happen!
相关问题
- 1. 奇怪的C宏语法(#var)
- 2. C++奇怪的语法
- 3. 奇怪的C#语法
- 4. 奇怪的C++语法
- 5. 奇怪的C++语法?
- 6. 奇怪的C++预处理器宏语法
- 7. 奇怪的C/C++的语法
- 8. 宏的奇怪行为C/C++
- 9. 目的C.奇怪的语法
- 10. 奇怪的函数调用像语法
- 11. gdb调试奇怪
- 12. 奇怪的宏(TASM)
- 13. 带问号的奇怪C#语法
- 14. Boost Asio示例 - 奇怪的C++语法
- 15. 奇怪的C语法1 [“ABCDE”]?
- 16. 无法调试NDK。奇怪的错误
- 17. LPeg语法奇怪
- 18. 统一,奇怪的调试
- 19. 调试时奇怪的值
- 20. c中的奇怪宏,使用多条语句
- 21. 奇怪的C++语法:函数调用之前类型定义
- 22. 奇怪宏观construstion
- 23. 奇怪宏声明
- 24. 奇怪的语法错误?
- 25. 奇怪的Python语法?
- 26. 奇怪的语法错误
- 27. VBA奇怪的语法
- 28. 奇怪的循环语法
- 29. 奇怪的Ruby语法?
- 30. 奇怪的javascript语法
这很迷人!很酷!我喜欢!我以前从未见过一种强制参数为文字的方法,但这是一个诀窍! –
必须有一个反斜杠丢失? – wildplasser
@MooingDuck:所以你读了这篇文章,和OP(和我)不同,*立即*将它删除了?对于你得到的C来说,这真是一个诀窍。 – usr2564301