#include <stdio.h>
void print(int a = __LINE__){printf("hello %d\n", a);}
void main(){
print();
print();
print();
print();
}
本__LINE__
例中的宏扩展为 3,因此 print 函数以相同的值被调用了 4 次。有没有办法说服编译器在调用点扩展这个宏,以便调用 print 函数6,7,8,9
而不是3,3,3,3
C++11 中存在的功能?
我的用例:
在我的应用程序中,我提供了多个采用唯一 ID 的函数。每个调用点/位置的 ID 应该是唯一的(因此,如果通过同一语句调用该函数两次,它应该接收相同的 ID)。目前,用户总是必须LOCATION
在调用点手动键入宏,如下所示:
#define S1(x) #x //voodoo to concat __FILE__ and __LINE__
#define S2(x) S1(x)
#define LOCATION __FILE__ S2(__LINE__)
do_stuff1(arguments, LOCATION)
do_stuff2(arguments, LOCATION)
如果我可以保存它们的输入,而不为每个函数创建一个宏,这样会更方便:
#define do_stuff1(do_stuff1_imp(arguments, LOCATION))
#define do_stuff2(do_stuff2_imp(arguments, LOCATION))
因此,我认为默认参数可以解决问题。有什么办法可以做到这一点?