在Visual Studio 2010中,可以通过添加以下预处理指令来输出当前文件路径与源文件当前行号:
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
#define LOG_LOCATION __FILE__ "(" TOSTRING(__LINE__) "): "
int main()
{
printf(LOG_LOCATION "Hello world\n");
}
以上代码中,预处理指令LOG_LOCATION
会将文件路径和当前代码行号连接起来,通过printf
输出。其中,__FILE__
代表文件名,__LINE__
代表行号,STRINGIFY
和TOSTRING
是通过宏定义来实现对字符串的转换。
示例1:输出文件路径与行号
#include <stdio.h>
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
#define LOG_LOCATION __FILE__ "(" TOSTRING(__LINE__) "): "
void doSomething(int arg) {
printf(LOG_LOCATION "Argument is: %d\n", arg);
}
int main() {
printf(LOG_LOCATION "Hello world\n");
doSomething(42);
return 0;
}
运行以上代码,输出如下:
D:\project\test.c(10): Hello world
D:\project\test.c(6): Argument is: 42
以上输出说明成功输出了当前文件路径与源文件当前行号。
示例2:在Visual Studio的输出窗口查看文件路径与行号
#include <stdio.h>
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
#define LOG_LOCATION __FILE__ "(" TOSTRING(__LINE__) "): "
int main() {
printf(LOG_LOCATION "Hello world\n");
OutputDebugStringA(LOG_LOCATION "Hello world\n");
return 0;
}
以上代码中,OutputDebugStringA
是一个Windows API函数,用来将字符串输出到Visual Studio的输出窗口中。
运行以上代码后,在Visual Studio的输出
窗口中会看到以下输出:
D:\project\test.c(8): Hello world
以上输出说明成功输出了当前文件路径与源文件当前行号,并将其输出到了Visual Studio的输出窗口中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在vs2010中,输出当前文件路径与源文件当前行号的解决方法 - Python技术站