BOOST_DLL_ALIAS — 为导出的函数或变量创建别名。
// In header: <boost/dll/alias.hpp>
BOOST_DLL_ALIAS(FunctionOrVar, AliasName)
此宏在处理长且混乱的 C++ 名称时非常有用。例如,某些 void boost::foo(std::string)
函数名称在名称修饰 (mangling) 后会变成类似 N5boostN3foosE
的形式。通过 N5boostN3foosE
名称导入函数看起来不太友好,尤其考虑到不同的编译器有不同的名称修饰方案。AliasName 是不会被修饰的名称,可以用作可移植的导入名称。
可以在任何命名空间中使用,包括全局命名空间。FunctionOrVar 必须是完全限定的,以便可以获取其地址。允许为单个变量/函数设置多个不同的别名。
确保 AliasName 在每个库/可执行文件中是唯一的。全局命名空间中的函数或变量的名称不得与 AliasName 相同。
在不同的翻译单元中,相同的 AliasName 必须指向相同的 FunctionOrVar。
将所有别名放入二进制文件的 "boostdll" 只读区段。等同于 BOOST_DLL_ALIAS_SECTIONED(FunctionOrVar, AliasName, boostdll)。
示例
namespace foo { void bar(std::string&); BOOST_DLL_ALIAS(foo::bar, foo_bar) } BOOST_DLL_ALIAS(foo::bar, foo_bar_another_alias_name)
请参阅: BOOST_DLL_ALIAS_SECTIONED,了解如何在特定区段中创建别名。
参数 |
|