函数别名适合头文件

时间:2019-01-25 18:36:16

标签: c++ alias linkage

假设这样的文件:

my_code.h:

namespace my {
    namespace _details{
        int ActionNoPrecision(int a);
        float ActionSinglePrecision(float a);
        double ActionDoublePrecision(double a);
    }

    auto& Action = my::_details::ActionSinglePrecision;
}

my_code.cpp -实现这些功能

因此,Action是函数别名,应从用户代码中调用。从我的角度来看,我想控制该别名的含义,而又不触及用户的源代码(即用户仍在调用Action,但Action = ActionDoublePrecision)。但是使用当前代码,我无法包含此头文件,因为函数引用将被多次定义。

如何处理?我想到了在内部使用这些别名创建静态类的想法,但是我从未在任何库中看到这种方法(所以它们只有一个硬编码的函数名吗?)。

我还有一个更深层次的问题。如果别名的含义发生了变化(即函数别名,类型别名等),别名是否可以解决重新编译用户代码的需求?我想没有,因为真正调用的函数的位置已更改,因此必须重新链接

1 个答案:

答案 0 :(得分:1)

您快到了。只需使用此:

=QUERY(IMPORTRANGE("11n8TUEiuLLtbyd6ot5imX0zoAOLforHEBnefnHpoZhs", "Sheet1!A1:AA"),
 "select * where Col20='Amy'", 1)

可以毫无问题地将其包含在多个翻译单元中。