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