0

我想创建一个 API,它在调用函数时getCPUusage()重定向到getCPUusage()Windows 或 Linux 的函数。所以我使用胶水文件api.h

getCPUusage() {
    #ifdef WIN32
        getCPUusage_windows();
    #endif
    #ifdef __gnu_linux__
       getCPUusage_linux();
    #endif
} 

所以我想知道 usinginline是否会是一个更好的解决方案,因为有了我所拥有的,电话会更大。

我的问题如下:在这种情况下,每次调用都使用内联函数更好吗?

4

2 回答 2

1

这取决于您的程序的用例。如果 consumer 仍然是 c++ - 那么 inline 就有意义了。但只是假设您想在 C、Pascal、Java 中重用它......在这种情况下,内联不是一种情况。调用者必须通过 lib 以某种方式导出稳定的名称,但不能从头文件中导出。Lib for linux 是相当透明的,而在 Windows 上你需要 apply__dllexport关键字——这不适用于inline

于 2013-04-25T16:05:54.370 回答
0

答案是:是的,它确实更高效,但可能不值得:

如果您将这些函数放在一个类中,则不需要在您的情况下写下“inline”关键字,因为您只有一个头文件(您没有任何 cpp 文件 - 根据您的描述)。在类定义中(在头文件中)实现的函数将被编译器自动视为内联函数。但是请注意,这只是对编译器的“提示”。如果发现(编译器)更有效,编译器仍可能决定使您的函数非内联。对于像你这样的小函数,它很可能会产生实际的内联函数。

如果您没有将这些函数放在一个类中,我认为您也不应该费心添加内联,因为(如上所述)它只是一个“提示”,即使没有这些“提示”,现代编译器也会弄清楚什么无论如何要内联的功能。无论如何,人类比编译器更容易在这些事情上出错。

于 2013-04-25T16:06:58.043 回答