Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1

Inline function

04.09.2017, 17:42. Показов 1546. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вычитал тут у отца основателя в книге вот такие строчки:

К сожалению, такого рода ошибки с трудом обрабатываются конкретными
реализациями, так что следующий пример (вполне логически корректный) —
комбинация внешней компоновки и встраивания, запрещается в угоду
компиляторам:


C++
1
2
3
4
5
6
// файл file1.с: 
extern inline int g (int i) ; 
int h {int i) {return g(i) ; } //error: g() не определена в данной единице трансляции 
 
// файл file2. с: 
extern inline int g (int i) {return i+1; }
там где он пишет error у меня нет error. Почему.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.09.2017, 17:42
Ответы с готовыми решениями:

Inline function (ООП)
Доброго времени суток. вопрос такой. что случится если задать функцию с лупом или сравнениями как inline? заранее спасибо.

E2214 Cannot have a non-inline function in a local class
Добрый день) class interf { public: virtual void print(TStringGrid*,int&)const=0; interf (){}; virtual ~interf(){}; };Выдает...

Inline функции - на сколько должна быть маленькая функция, чтоб она подошла под inline?
Здравствуйте. Знаю теорию, но не понимаю, на сколько должна быть маленькая функция, чтоб она подошла под inline ? Как...

10
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
04.09.2017, 18:02
_stanislav, возможно, книга отца относится к старому стандарту и сейчас уже можно / компилятор достаточно хорош, чтоб правильно собрать код
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
04.09.2017, 18:04
Цитата Сообщение от _stanislav Посмотреть сообщение
там где он пишет error у меня нет error. Почему.
О каком языке идет речь? Почему у файлов расширения ?
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
04.09.2017, 18:52  [ТС]
TheCalligrapher,
книга
The C++ Programming Language
Special Edition
Bjarne Stroustrup
AT&T Labs
Murray Hill, New Jersey
2011
256 страница.

Добавлено через 2 минуты
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
О каком языке идет речь? Почему у файлов расширения .с?
видимо о "С++", в "С" вроде как нет inline?

Добавлено через 18 минут
Цитата Сообщение от DobroAlex Посмотреть сообщение
возможно, книга отца относится к старому стандарту и сейчас уже можно / компилятор достаточно хорош, чтоб правильно собрать код
Почему в старом стандарте это считалось ошибкой?
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
04.09.2017, 18:58
Как Вы компилируете. Что при этом выводит компилятор.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
04.09.2017, 19:06  [ТС]
Цитата Сообщение от stima Посмотреть сообщение
Как Вы компилируете. Что при этом выводит компилятор.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// main.cpp
 
extern inline void Function();
 
int main(int argc, char* argv[] )
{
    Function();
 
    return 0;
}
 
// A.cpp
 
extern inline void Function()
{
 
}
ничего не пишет компилятор, vs 2015 отрабатывает без проблем.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
04.09.2017, 19:08
Цитата Сообщение от _stanislav Посмотреть сообщение
в "С" вроде как нет inline?
http://en.cppreference.com/w/c/language/inline
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
04.09.2017, 19:17  [ТС]
GbaLog-, в "C" вроде как есть inline
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
04.09.2017, 20:35
Цитата Сообщение от _stanislav Посмотреть сообщение
там где он пишет error у меня нет error. Почему
У тебя gcc?
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
04.09.2017, 22:12
Лучший ответ Сообщение было отмечено DrOffset как решение

Решение

Цитата Сообщение от _stanislav Посмотреть сообщение
там где он пишет error у меня нет error. Почему.
Ошибка в такой ситуации не гарантируется. Стандарт языка С++ открытым текстом говорит, что диагностика таких нарушений не является обязательной.

На практике, если функция, объявленная inline все таки породила нормальное "тело" функции в той единице трансляции, где она определена, то к этому телу функции можно будет линковаться из других единиц трансляции, как к обычной функции. Ошибок не будет.

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

P.S. Комбинация extern inline - это все таки несколько странно для С++. Такое обычно можно увидеть в С. В С++ явное указание extern ни к чему.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
05.09.2017, 04:38  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
У тебя gcc?
vs 2015

Добавлено через 6 минут
cl.exe
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.09.2017, 04:38
Помогаю со студенческими работами здесь

inline функции vs инструкции inline функций
Здравствуйте. Чтобы не писать повторно код, нужно использовать функции. Но если функции компактные, то их лучше делать inline функциями, т....

C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend
выкидывает C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend при компиляции. что делать?

Многофайловая программа, ошибка: unresolved external symbol 'symbol' referenced in function 'function'
1 файл header #pragma once #ifndef LIST_1_ #define LIST_1_ template <typename T> class list { public: list();

Почему возникает ошибка "function returning function is not allowed"
Подключаю заголовочный файл .dll библиотеки, возникают ошибки #pragma once #include <vector> struct RSA_Interface { ...

If a function throws an exception that is not listed in the function exception-specification list
Вопрос: if a function throws an exception that is not listed in the function exception-specification list and noexcept is not specified,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru