首页 > 解决方案 > Replacement-List 宏函数 [问题]

问题描述

替换列表宏功能


我正在尝试创建一个快速宏,它允许我简单地获取一个类指针并根据类指针名称命名设置模块,如下所示:

#define dll_import(...) dll_module->__VA_ARGS__= \
GetModuleHandleW(L#__VA_ARGS__.dll)  // Note: This is where I'm confused.

当我尝试这样做时,它显然不会起作用,因为我不能只将“.dll”附加到参数上,因为它在字符串的参数包含之外:

在此处输入图像描述只是我参考帮助中的一个视觉示例。忽略表达式捕获错误。

目前我只是想知道是否有人知道解决此问题的方法,感谢所有帮助。

标签: c++modulemacros

解决方案


看起来您正试图简单地将字符串连接在一起。如果是这种情况,解决方案应该只是确保该.dll部分也是字符串文字:

#define dll_import(...) dll_module->__VA_ARGS__= \
    GetModuleHandleW(L#__VA_ARGS__ L".dll")

这会将输入转换dll_import(verified_module)为:

dll_module->verified_module = GetModuleHandleW(L"verified_module" L".dll")

哪个 C++ 将被视为两个后续字符串文字并连接在一起作为一个,L"verified_module.dll"


推荐阅读