在C / C ++中使用__LINE__和__FILE__的性能损失

时间:2013-05-29 04:34:54

标签: c++ c performance

这更像是一个普遍的问题。在记录相关功能时使用 LINE FILE 是否有任何性能损失?我一直这样使用它们:

在c ++中

Logger::debug("Incoming msg from rs232,__LINE__, __FILE__);

并且我的程序运行速度非常慢..我只是想确认是否删除它们会给我带来任何显着的性能提升,因为从各地移除它们是一项艰巨的任务。

由于

2 个答案:

答案 0 :(得分:9)

不,一点也不。它们是扩展为常量的宏。

__LINE__将行号扩展为十进制整数常量,将__FILE__扩展为C字符串常量。

答案 1 :(得分:8)

没有。它们由预处理器扩展,如果在这样的代码中使用:

printf("This is " __FILE__ ".\n");

然后编译器将连接字符串文字,并且不会对性能产生影响。

另一方面,如果他们被作为额外的论点传递:

printf("This is %s.\n", __FILE__);

然后可能会对性能产生影响,但影响与此类似:

printf("This is %s.\n", "an answer on Stack Overflow");