c语言 - MAP 文件不包含内联函数



是否有办法在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文件)中。

最新更新