访问C ++ / 11类中的预编译函数

时间:2014-08-23 09:53:10

标签: c++ shell clang

如果标题有误导性,我很抱歉,我正在寻找以下解决方案:

我正在开发一个图书馆,供其他人使用。他们必须遵循严格的设计理念以及他们构建库中任何其他功能的方式。它们都使用Linux和(Vim),因此允许使用终端命令(即能够编译等等)。我们都使用clang作为编译器。

我的问题是:假设我写了一个名为“checkCode”的函数:

    template<typename T>
    void checkCode(T&& codeSnippet)
    {
       //// code 
    }

我想让这个函数运行,所以无论何时在终端中键入“checkCode”,都会调用此函数。我知道使用clang你有类似的功能,然而,这是可以理解的,因为你正在使用整个clang。所以:

1)是否可以只编译一个类,然后通过访问每个函数 .dylab | .so文件?

2)这可能是一个更好的主意,或者,更好地获取clang源的副本,添加此功能并将其作用于那些使用和贡献库的人?这就像clang的附加插件一样?

由于

1 个答案:

答案 0 :(得分:1)

您可以像busybox一样使用一个可执行文件和符号链接:

int main(int argc, char **argv)
{
    string programName = argv[0];
    size_t lastSlash = programName.find_last_of('/');
    if(lastSlash != string::npos)
        programName = programName.substr(lastSlash + 1);
    if(programName == "function_1")
    {
        function_1();
        return 0;
    }
    if(programName == "function_2")
    {
        function_2();
        return 0;
    }
    // ...
    // normal main code
    return 0;
}