Microsoft Visual C ++, внешне определяющая встроенную функцию

Я пытаюсь определить функцию в файле CPP, который будет объявлен в заголовочном файле. Я хотел бы знать правильный способ сделать это, поскольку все, что я пробовал, компилируется и запускается, и мои навыки анализа не достаточно хороши, чтобы исследовать, действительно ли функции встроены.

Вот что я хотел бы сделать

/// Source.h
void inlined_func(); // what specifiers should I put here?
// I was thinking about doing both `extern` and `__forceinline`/// Source.cpp
__forceinline void inlined_func()
{
std::cout << "we're in the inlined func" << std::endl;
}

2

Решение

Функция объявлена ​​как __forceinline по умолчанию получает внутреннюю связь (имя может упоминаться только в текущей единице перевода), как если бы она была объявлена ​​как static, Если вы попытаетесь использовать его в другом модуле перевода, вы получите ошибку компоновщика LNK2001 unresolved external symbol ..., Чтобы принудительно установить внешнюю связь, чтобы на нее можно было ссылаться в других единицах перевода, используйте extern ключевое слово.

foo.h

void foo();

foo.cpp

#include <foo.h>
extern __forceinline void foo() {
/*...*/
}

main.cpp

#include <foo.h>
int main() {
foo();
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]