Я понимаю, что inlineсамо по себе это предложение для компилятора, и по своему усмотрению он может или не может встроить функцию, а также будет создавать объектный код с возможностью связывания.
Я думаю, что это static inlineделает то же самое (может или не может быть встроенным), но не будет создавать связываемый объектный код при встроенном (поскольку ни один другой модуль не может ссылаться на него).
Где extern inlineвписывается в картину?
Предположу , я хочу , чтобы заменить препроцессор макрос инлайн функции и требую , чтобы эта функция получает встраиваемую (например, потому что он использует __FILE__и __LINE__макросы , которые должны решить для вызывающего абонента , но это не называется функция). То есть я хочу видеть ошибку компилятора или компоновщика, если функция не встроена. Это делает extern inline? (Я полагаю, что в противном случае нет другого способа добиться такого поведения, кроме как придерживаться макроса.)
Есть ли различия между C ++ и C?
Есть ли различия между разными поставщиками и версиями компиляторов?