Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 函数别名,适用于头文件_C++_Alias_Linkage - Fatal编程技术网

C++ 函数别名,适用于头文件

C++ 函数别名,适用于头文件,c++,alias,linkage,C++,Alias,Linkage,假设文件如下: 我的_代码.h: my_code.cpp-实现这些功能 所以Action是函数别名,它是从用户代码调用的。从我的角度来看,我想控制这个别名的含义,而不涉及用户的源代码,即用户仍然调用Action,但Action=ActionDoublePrecision。但对于当前代码,我不能包含这个头文件,因为函数引用将被定义多次 如何处理?我提出了用这些别名创建静态类的想法,但我从未在任何库中见过这种方法,所以它们只有一个硬编码函数名吗 我还有一个更深层次的问题。如果别名的含义发生了变化,即

假设文件如下:

我的_代码.h:

my_code.cpp-实现这些功能

所以Action是函数别名,它是从用户代码调用的。从我的角度来看,我想控制这个别名的含义,而不涉及用户的源代码,即用户仍然调用Action,但Action=ActionDoublePrecision。但对于当前代码,我不能包含这个头文件,因为函数引用将被定义多次

如何处理?我提出了用这些别名创建静态类的想法,但我从未在任何库中见过这种方法,所以它们只有一个硬编码函数名吗


我还有一个更深层次的问题。如果别名的含义发生了变化,即函数别名、类型别名和其他别名,那么别名是否可以解决重新编译用户代码的需要?我想不会,因为真正被调用的函数的位置已经改变,所以重新链接是必要的。只要用这个:

constexpr auto* Action = my::_details::ActionSinglePrecision;
这可以包含在多个翻译单元中,没有问题

constexpr auto* Action = my::_details::ActionSinglePrecision;