是否有办法在MAP文件中包含内联函数?在本质上有任何方法包括非公共符号在地图文件?
谢谢,
当函数内联时,它们不会作为要调用的符号函数出现在最终编译单元中。当内联时,编译器将代码直接放入调用者中,因此如果这是内联的:
inline int multiply(int a, int b)
{
return a*b
}
int main()
{
printf("%i", multiply(a,b));
}
内联导致在编译后的产物中作为符号的乘法消失,得到与:
相同的结果: int main()
{
printf("%i", a * b);
}
如果您总是希望函数在最终产品中显示为符号,则删除内联。您的编译器可能有一个开关,可以很容易地在构建中删除内联。
内联函数内联。如果被内联,则不会调用它们。它们将被拼接到二进制代码中,无论调用"通常"发生在哪里。
标准C(又名C99)有一个定义良好的方法来发出inline
函数的符号。只需将定义(含inline
)放在.h文件中,并将不含inline
的声明(不含函数体)放在一个编译单元(.c文件)中。