Стоит ли использовать ключевое слово inline или компилятор достаточно умен, чтобы знать, когда ему нужно встроить функцию?C: Стоит ли ключевое слово inline?
ответ
Компилятор довольно умный и имеет множество показателей, чтобы выяснить, стоит ли что-то сделать. Но иногда, однако, разработчик будет иметь представление о том, как приложение будет запущено, и будет знать, что делать, что компилятор не делает автоматически. Тем не менее, я никогда не буду вводить данные вручную, если бы у меня не было некоторых тестов, и я обнаружил, что встроенный улучшит мою производительность.
Вы можете узнать больше о том, как GCC uses inline.
Его всегда стоит говорить о намерениях.
Его также стоит отметить, что компилятор даже не нужен, если он думает, что его лучше не слишком.
Да, это достаточно умно. Но то, что за последние 40 лет не достигло никакого прогресса, - это способ создания программ на С. Это по-прежнему один файл исходного кода за раз.
Чтобы получить функцию, встроенную в более чем один .c файл, вы помещаете определение функции в файл .h. И если вы не отметите их inline, компоновщик будет жаловаться на несколько определений.
+1, 'inline' в настоящее время означает« разрешить несколько определений ». Тот факт, что это также намек на компилятор, чтобы «быстро вызвать вызов этой функции», - это несвязанный и нерелевантный побочный эффект :-) Я думаю, что дело не в том, что «способ создания программ» не продвинулся - некоторые компиляторы/линкеры иметь. Но самый низкий общий знаменатель, который позволяет стандарт, не продвинулся. –
Говорить 'inline' означает« разрешить несколько определений »просто неправильно. Этот вопрос касается языка C, а не C++. C не имеет функций 'extern inline', ключевое слово' inline' недопустимо без 'static', и несколько определений функции никогда не разрешаются. –
Стандарт говорит
7.1.2 Функция спецификаторам
2. объявление функции (8.3.5, 9.3, 11.4) с инлайн спецификатор объявляет функцию инлайн. Спецификатор inline указывает на реализацию, что встроенная подстановка тела функции в точке вызова предпочтительнее обычного механизма вызова функции. Реализация не требуется для выполнения этой встроенной подстановки в точке вызова; однако, даже если эта встроенная замена опущена, другие правила для встроенных функций, определенных в 7.1.2, все равно должны соблюдаться.
Так что я бы уподобить inline
, может быть, <br />
в HTML - это хорошая практика, чтобы использовать Самозапирающийся <br />
все время. Но можно утверждать, что почти все версии относятся к <br>
и <br />
точно так же, что ИМО пропускает точку.
Как отмечали другие, это, вероятно, не очень актуально для оценки эффективности в эти дни. Но я думаю, что он по-прежнему хорошо служит семантикой, целью которой является ключевое слово.
- 1. Когда ключевое слово "inline" действует в C?
- 2. C++ `inline` ключевое слово и оптимизация компилятора
- 3. Inline ключевое слово vs определение заголовка
- 4. Можно ли использовать ключевое слово `retry` inline с` if`?
- 5. Влияет ли ключевое слово inline на оптимизацию времени ссылки?
- 6. ключевое слово inline вызывает ошибку компоновщика 2019 в Visual C++
- 7. C# переопределить ключевое слово
- 8. C# ref ключевое слово
- 9. «Использует» ключевое слово C#?
- 10. C++ ключевое слово изменяемые
- 11. C++ «const» ключевое слово
- 12. Ключевое слово оператора C++
- 13. C# WinForms Ключевое слово
- 14. C/C++ ключевое слово «inline» в коде на стороне устройства CUDA
- 15. Можно ли переопределить ключевое слово C++?
- 16. Является ли зарезервированное ключевое слово?
- 17. Можно ли использовать ключевое слово `this` в C?
- 18. Volatile ключевое слово в C
- 19. Когда следует писать ключевое слово 'inline' для функции/метода?
- 20. 'вар' ключевое слово в C#
- 21. C# - Отключить динамическое ключевое слово
- 22. ключевое слово «РУЧКА» в c
- 23. Неподписанное ключевое слово в C++
- 24. ключевое слово C# 'ref', производительность
- 25. Javascript использует ключевое слово var ключевое слово?
- 26. C# Метод перегрузки против Param Ключевое слово
- 27. "nice" ключевое слово в C++?
- 28. ключевое слово оператора в C++
- 29. Throws ключевое слово в C++
- 30. C# Generics «in» ключевое слово
Замечание не стоит отвечать: если вы не собираетесь использовать функцию извне компиляции, в которой находится, ключевое слово «static» делает больше, чтобы помочь компилятору, чем «inline». Затем компилятор может быть, например, встроен независимо от размера, если есть один сайт вызова. –