在用户定义的宏中使用__FILE__和__LINE__
Using __FILE__ and __LINE__ in a user-defined macro
我有一个这样声明的宏:
#define Ex(a) { throw MyException((a), __LINE__, __FILE__); }
我是这样使用它的:
if (bad_things_happen) Ex(error_code)
这些宏是包含#define
语句还是if
语句的行和文件?如果它们包含#define
语句的行和文件,那么我的宏基本上是无用的…
不,它扩展到你使用它的行号:
__LINE__
这个宏以十进制整数常量的形式展开为当前输入的行号。虽然我们称之为预定义宏,但它是一个相当奇怪的宏,因为它的"定义"随着源代码的每一行而改变。
对于文件:
__FILE__
这个宏以C字符串常量的形式展开为当前输入文件的名称。这是预处理器打开文件的路径,而不是' #include '中指定的短名称或作为输入文件名参数。例如,"/usr/local/include/myheader.h"是这个宏的可能扩展。
相关文章:
- Seg Fault Issue C++ (file IO / getline)
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- File.cpp.o:OpenPose 标志 CMakeFiles/.. 的多重定义/main.cpp.o:首先在这里定
- Visual Studio C++ Project File CustomBuild Task: Filter Outp
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- 以某种方式告诉编译器"Do not process line of code"
- 可视化 如何在C++中将字符数组转换为 FILE 类型
- 如何在从文件中读取整数时使用 file.eof()?
- "No such file or directory" C++标头问题
- 使用 sftp_open() 使用 C++ 中的 SFTP libssh 将文件从本地复制到远程时,File 返回 N
- Visual Studio "fatal error LNK1104: cannot open file"未使用或包含的库
- typedef vector size_type in header file
- make 命令创建 .file,但不创建应用程序文件
- 为什么 VScode 在 .h 文件中显示"'iostream' file not found"?
- 我在 #include < bits/stdc++h.> 放置时出错"No such file or directory"
- 使用 编译时。RES File with MinGW G++, .无法识别 RES
- qSetMessagePattern( "%{file}(%{line}): %{message}" ) 输出"unkown(0)"
- GDB 不断产生"No line xx in file"错误,即使文件包含以下行
- "Peek ahead"检查下一次对getline(file,line)的调用是否会返回false - 而不实际调用它,即不消耗该行