Я розумію, що inline
сам по собі є пропозицією для компілятора, і на свій розсуд він може вбудовувати функцію або не вбудовувати її, а також створюватиме об’єктний код, що зв’язується.
Я думаю, що static inline
робить те саме (може, а може і не вбудовано), але не створює прив’язуваний об’єктний код, коли вбудований (оскільки жоден інший модуль не може зв’язуватися з ним).
Де extern inline
вписується малюнок?
Припустимо, я хочу замінити макрос препроцесора на вбудовану функцію і вимагати, щоб ця функція вбудовувалася (наприклад, тому, що вона використовує макроси __FILE__
та і __LINE__
макроси, які повинні вирішувати для абонента, але не цю функцію, що викликається). Тобто, я хочу побачити помилку компілятора або компонувальника, якщо функція не буде вбудована. Чи extern inline
робить це? (Я припускаю, що, якщо цього не сталося, немає іншого способу досягти цієї поведінки, крім дотримання макросу.)
Чи є відмінності між C ++ та C?
Чи існують відмінності між різними постачальниками компіляторів та версіями?