我想创建一个API,在调用函数时,例如getCPUusage()
,重定向到Windows或Linux的getCPUusage()
函数。
所以我正在使用粘贴文件api.h
:
getCPUusage() {
#ifdef WIN32
getCPUusage_windows();
#endif
#ifdef __gnu_linux__
getCPUusage_linux();
#endif
}
所以我想知道使用inline
是否会有更好的解决方案,因为我拥有的内容会更大。
我的问题如下:在这种情况下,为每次通话使用内联函数会更好吗?
答案 0 :(得分:1)
这取决于您的程序的用例。如果消费者仍然是c ++ - 那么内联是有道理的。
但是假设您想在C,Pascal,Java中重用它...在这种情况下,内联不是一种情况。调用者必须通过lib导出一些稳定的名称,但不能从头文件导出。
Lib for linux相当透明,而在Windows上,您需要应用__dllexport
关键字 - 这不适用于inline
答案 1 :(得分:0)
答案是:是的,确实更有效率,但可能不值得:
如果您将这些功能放在一个类中,则不需要在您的情况下记下“inline”关键字,因为您只有一个头文件(您没有任何cpp文件 - 根据对你的描述)。 在类定义中(在头文件中)实现的函数将被编译器自动视为内联函数。但请注意,这只是编译器的“提示”。如果发现(通过编译器)更高效,编译器仍可能决定使您的函数非内联。对于像你这样的小函数,它很可能产生实际的内联函数。
如果你没有把这些功能放在一个类中,我认为你也不应该费心添加内联,因为(如上所述)它只是一个“提示”,即使没有那些“提示”,现代编译器也会弄清楚无论如何要内联的功能。无论如何,人类对这些事情更可能是错误的。