__FILE__的基本文件名
base file name from __FILE__
我只需要文件名,只有__FILE__
宏和__FILEW__
宏返回整个路径的地方。
我定义了以下内容:
#define __FILE_NAME_ONLY__ (strrchr(__FILE__, '') ? strrchr(__FILE__, '') + 1 : __FILE__)
我按如下方式使用它:
#define MY_TRACE( mask, format, ... )
GlobalTrace( mask, L"-[" __FILE_NAME_ONLY__ L":" format , __VA_ARGS__ )
我收到以下错误:
错误 C2064:术语的计算结果不等于采用 1 个参数的函数
当我尝试以下宏时:
#define __WIDE(_String) L ## _String
#define _WIDE(_String) __WIDE(_String)
如下
#define MY_TRACE( mask, format, ... )
GlobalTrace( mask, L"-[" _WIDE(__FILE_NAME_ONLY__) L":" format , __VA_ARGS__ )
我得到:错误 C2146:语法错误:当我实际尝试使用 MY_TRACE 宏时,标识符"L"之前缺少")"
我错过了什么?谢谢
您依赖于字符串文本连接,除了所有术语都不是字符串文本。
我假设您以前是这样做的:
#define MY_TRACE( mask, format, ... )
GlobalTrace( mask, L"-[" __FILE__ L":" format , __VA_ARGS__ )
如果__FILE__
和format
扩展为字符串文本,则 4 个字符串将粘贴为一个字符串。 "A" "B" "C" "D"
与 "ABCD"
相同。
当您替换为__FILE_NAME_ONLY__
时,不会发生这种情况,因为它扩展到函数调用,而不是文字。
如果您使用的是 gcc,此宏应该会有所帮助:
__BASE_FILE__
这是一个有用的列表
相关文章:
- Seg Fault Issue C++ (file IO / getline)
- 从命令行c++发送文本文件名
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 当Microsoft文档仅包含 C# 示例时,如何查找 C++ 包含文件名
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- 如何在CPP的给定目录中列出UTF编码的文件名?
- File.cpp.o:OpenPose 标志 CMakeFiles/.. 的多重定义/main.cpp.o:首先在这里定
- Visual Studio C++ Project File CustomBuild Task: Filter Outp
- 在Visual Studio 2019中保存时ReadDirectoryChangesW文件名的问题
- C++:在Windows中浏览名称中带有点的文件名
- 我在 ifstream input_file(文件名)行中收到错误"no matching function to call";
- 不带预处理器的调用方法/文件的文件名/行号
- 在 C++ 中为文件名添加时间戳
- 为什么当我在 std::string 中打开文件名的 fstream 时出现"no matching function"错误?
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- 可视化 如何在C++中将字符数组转换为 FILE 类型
- 如何将文件名作为参数传入并正确打开?
- 如何在目录及其子文件夹中构建文件名字符串向量?