powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Предупреждение компилятора (inline-функция)
10 сообщений из 10, страница 1 из 1
Предупреждение компилятора (inline-функция)
    #34199156
adm.Beat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получают следующее:

"Functions containing some return statements are not expanded inline"

в примерно такой коде:

Код: plaintext
1.
2.
3.
4.
inline AnsiString TItemStyle::GetRegValueBackColor(void)
{
	return Path + "\\BackColor";
};

почему компилер не хочет ее встраивать?

з.ы. + чем ему не нравятся функции с "пропущенными" return'ами?
...
Рейтинг: 0 / 0
Предупреждение компилятора (inline-функция)
    #34199301
pandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
adm.Beat"Functions containing some return statements are not expanded inline"
почему компилер не хочет ее встраивать?
з.ы. + чем ему не нравятся функции с "пропущенными" return'ами?

Компилятор написали обычные люди и вложили в него некоторые идеи. Твой код плохо согласуется с их реализацией и компилятор вынужден выругаться.
Попробуй
return AnsiString(Path) + "\\BackColor";

Кроме того, а что у тебя за страсть всовывать все, что ни попадя в inline?
...
Рейтинг: 0 / 0
Предупреждение компилятора (inline-функция)
    #34199418
adm.Beat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то был лишь пример.

более реальный (а почему бы не встроить?):
inline AnsiString GetFormSID(TForm *Form) { return Form->ClassName(); }
...
Рейтинг: 0 / 0
Предупреждение компилятора (inline-функция)
    #34199447
adm.Beat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ни так return AnsiString(Path) + "\\BackColor"; ибо path и есть ansistring
ни так return AnsiString(Path) + "\\BackColor" ибо все к тому и приведется

есть еще идеи? ;)
...
Рейтинг: 0 / 0
Предупреждение компилятора (inline-функция)
    #34199653
adm.Beat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как я понял встраиваемые функции не могут вовзращать нестандартные типы (объекты и т.п.)
с простыми типами все ок.
...
Рейтинг: 0 / 0
Предупреждение компилятора (inline-функция)
    #34199849
Фотография Палестинец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема в том что оператор +() это тоже функция и она не инлайнится..
(почему - другой вопрос :-)) смотри её код..
__declspec(noinline) либо ещё чего :-)
...
Рейтинг: 0 / 0
Предупреждение компилятора (inline-функция)
    #34199880
Фотография Палестинец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adm.Beatто был лишь пример.

более реальный (а почему бы не встроить?):
inline AnsiString GetFormSID(TForm *Form) { return Form->ClassName(); }

аа. дык Виртуальный метод может быть?
...
Рейтинг: 0 / 0
Предупреждение компилятора (inline-функция)
    #34199977
adm.Beat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Палестинецпроблема в том что оператор +() это тоже функция и она не инлайнится..
(почему - другой вопрос :-)) смотри её код..
__declspec(noinline) либо ещё чего :-)
почему компилер не вставляет вызов оператора (функции) в таком случае (т.е. по приниципу define)?

>>аа. дык Виртуальный метод может быть?
up
...
Рейтинг: 0 / 0
Предупреждение компилятора (inline-функция)
    #34200883
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все посты в треде относительно почему оно не инлайнится есть не более чем измышления постящих.

Такая маленькая функция конечно вполне хороший кандидат на inline.

Виртуальные методы можно инлайнить (только не всегда будут они инлайниться).

Инлайн-функции могут вовзращать все что угодно, ограничений нет.

Инлайнится или нет оператор + (или любая другая функция) к делу никак не относится.

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

Почему компилятору не нравится return - я не знаю, возможно потому что должен сконструироваться и вернутся временный объект, но почему его нельзя инлайнить - я не понимаю.

Можно попробовать возвращать константную ссылку (если есть на что, конечно ) как то:

inline const AnsiString& TItemStyle::GetRegValueBackColor(void) { ... }
...
Рейтинг: 0 / 0
Предупреждение компилятора (inline-функция)
    #34200995
Фотография Палестинец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все посты в треде относительно почему оно не инлайнится есть не более чем измышления постящих.
+1 ;-)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Предупреждение компилятора (inline-функция)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]