MAP文件不包含INLINE函数

时间:2011-04-26 17:09:50

标签: c compiler-construction linker

有没有办法在MAP文件中包含内联函数。本质上是否有任何方法可以在地图文件中包含非公共符号?

谢谢,

3 个答案:

答案 0 :(得分:1)

当函数内联时,它们不会作为要调用的符号函数出现在最终编译单元中。内联时,编译器将代码直接放入调用者,因此如果内联:

  inline int multiply(int a, int b)
  {
      return a*b
  }

  int main() 
  {
      printf("%i", multiply(a,b));
  }

内联导致在编译产品中作为符号的乘法消失,与下面相同:

  int main() 
  {
      printf("%i", a * b);
  }

如果您始终希望该功能在最终产品中显示为符号删除内联。您的编译器可能有一个开关,可以很容易地删除构建中的内联。

答案 1 :(得分:0)

内联函数正在内联。没有电话给他们如果他们被内联。它们将被拼接到二进制代码中,而“正常”调用将会发生。

答案 2 :(得分:0)

标准C(又名C99)有一个明确定义的方法,可以发出inline函数的符号。只需在一个编译单元(.c文件)中将定义(带有inline)放在.h文件和声明(无函数体)而不用inline