【发布时间】:2012-10-01 22:01:20
【问题描述】:
谁能告诉我内联函数和静态内联函数有什么区别?
在哪些情况下我应该更喜欢静态内联而不是内联?
我问这个问题是因为我有一个内联函数,在链接过程中我遇到了编译问题 (relocation error:... symbol has been discarded with discarded section ...)。我把它变成了一个正常的功能,它起作用了。
现在我的一些前辈告诉我尝试使用静态内联。
以下是我的功能:
inline void wizSendNotifier (const char* nn_name, bpDU* arg=0, int aspect = -1)
{
wizuiNotifier* notifier = ::wizNtrKit.getNotifier (nn_name);
notifier->notify (arg, aspect);
}
这不在一个类中。这是在头文件中!
我猜对静态函数的调用应该只在定义它的特定 TU 中完成。
由于我的函数位于头文件中,如果我将其设为静态,是否会出现这种情况,即我在哪里包含该头文件,静态函数可以在该翻译单元中使用?
【问题讨论】:
-
这个函数在一个类里面吗?也请张贴其声明。
-
::wizNtrKit是静态对象吗?它的联系是什么? -
还有,函数出现在哪里?头文件,源文件?包含多少个源文件?
-
函数出现在头文件 steve 中。包含头文件的源文件大约有 50 个
标签: c++ static compiler-errors solaris inline