Файлы MAP не включают в себя функции INLINE - PullRequest
1 голос
/ 26 апреля 2011

Есть ли способ включить встроенные функции в файлы MAP.По сути, есть ли способ включить непубличные символы в файл карты?

Спасибо,

Ответы [ 3 ]

1 голос
/ 26 апреля 2011

Когда функции встроены, они не присутствуют в конечном блоке компиляции как символическая функция, которая должна быть вызвана. Когда он встроен, компилятор помещает код непосредственно в вызывающую программу, поэтому, если он был встроен:

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

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

В результате вставки умножение в виде символа в скомпилированном произведении исчезает, давая то же, что и:

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

Если вы всегда хотите, чтобы функция появлялась в виде символа в конечном продукте , удалите строчки . У вашего компилятора может быть переключатель, который облегчит удаление встроенных строк в сборке.

0 голосов
/ 26 апреля 2011

Стандарт C (он же C99) имеет четко определенный способ получения символа для функции inline.Просто поместите определение (с inline) в файл .h и объявление (без тела функции) без inline только в одну единицу компиляции (файл .c).

0 голосов
/ 26 апреля 2011

Встроенные функции встроенные . Для них нет вызова , если они встраиваются. Они будут вставлены в двоичный код там, где когда-либо будет происходить «нормальный» вызов.

...