我有一个问题,因为下面的代码描述了自己.
1 #include<stdlib.h> 2 #include<stdio.h> 3 void log() 4 { 5 printf("Log [Line:%d]\n",__LINE__); 6 } 7 int main() 8 { 9 log(); 10 log(); 11 }
预期的结果是
记录[行:9]
记录[行:10]
但事实是
记录[行:5]
记录[行:5]
毫不奇怪,LINE在预处理阶段被取代为5.
我的问题是,如何设计日志功能以获得预期的结果?
谢谢!
解决方法
你需要写一个宏:
#define LOG printf("Log [Line:%d]\n",__LINE__)
然后使用它:
int main() { LOG; LOG; }
这是有效的,因为宏在其使用点扩展,为__LINE__宏提供正确的值.
原文地址:https://www.jb51.cc/c/116639.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。