ошибка компоновщика подставляемой функции

Список игнорируемых файлов хранится в свойстве. Используйте svn proplist , чтобы показать свойства каталога.

28
задан stanigator 5 June 2009 в 00:06
поделиться

5 ответов

Затем вам нужно поместить определение функции в заголовок. Самый простой способ указать компилятору встроить его - включить тело метода в объявление класса, например:


class NeedleUSsim
{
  // ...
  int GetTplLSize() const { return sampleDim[1]; }
  // ...
};

или, если вы настаиваете на отдельном объявлении и определении:


class NeedleUSsim
{
  // ...
  int GetTplLSize() const;
  // ...
};

inline int NeedleUSsim::GetTplLSize() const
{ return sampleDim[1]; }

Определение должно быть видимым в каждой единице перевода, которая использует это метод.

30
ответ дан 28 November 2019 в 02:54
поделиться

из C ++ FAQ Lite

Если вы поместите встроенную функцию определение в файл .cpp, и если оно вызывается из другого файла .cpp, вы получите "неразрешенный внешний" ошибка компоновщика.

Как сообщить компилятору сделать функцию-член встроенной?

25
ответ дан 28 November 2019 в 02:54
поделиться

Как уже указывали другие, вам нужно переместить определение встроенной функции в файл заголовка, например:

class NeedleUSsim
{
  // ...
  inline int GetTplLSize() { return sampleDim[1]; }
  // ...
};

Причина в том, что компилятор должен знать, что код для встраивания, когда он видит вызов встроенной функции. Если вы оставите определение функции в файле .cpp для класса NeedleUSsim, код, созданный для него компилятором, окажется в объектном файле NeedleUSsim. Поскольку компилятор только читает исходный код - он никогда не заглядывает в объектный файл другого класса - у него просто нет способа узнать, каким кодом заменить вызов при компиляции другого файла .cpp.

5
ответ дан 28 November 2019 в 02:54
поделиться

См. Идиому макроса встроенной защиты . Это, по крайней мере, позволит вам отделить, хотя и немного, код от объявления. Он также позволяет переключать встраивание функций с помощью определения .

0
ответ дан 28 November 2019 в 02:54
поделиться

Если у вас есть встроенная функция, вы должны поместить определение в файл заголовка.

3
ответ дан 28 November 2019 в 02:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: