|
|
|
Предупреждение компилятора (inline-функция)
|
|||
|---|---|---|---|
|
#18+
Получают следующее: "Functions containing some return statements are not expanded inline" в примерно такой коде: Код: plaintext 1. 2. 3. 4. почему компилер не хочет ее встраивать? з.ы. + чем ему не нравятся функции с "пропущенными" return'ами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 11:32 |
|
||
|
Предупреждение компилятора (inline-функция)
|
|||
|---|---|---|---|
|
#18+
adm.Beat"Functions containing some return statements are not expanded inline" почему компилер не хочет ее встраивать? з.ы. + чем ему не нравятся функции с "пропущенными" return'ами? Компилятор написали обычные люди и вложили в него некоторые идеи. Твой код плохо согласуется с их реализацией и компилятор вынужден выругаться. Попробуй return AnsiString(Path) + "\\BackColor"; Кроме того, а что у тебя за страсть всовывать все, что ни попадя в inline? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 12:02 |
|
||
|
Предупреждение компилятора (inline-функция)
|
|||
|---|---|---|---|
|
#18+
то был лишь пример. более реальный (а почему бы не встроить?): inline AnsiString GetFormSID(TForm *Form) { return Form->ClassName(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 12:25 |
|
||
|
Предупреждение компилятора (inline-функция)
|
|||
|---|---|---|---|
|
#18+
ни так return AnsiString(Path) + "\\BackColor"; ибо path и есть ansistring ни так return AnsiString(Path) + "\\BackColor" ибо все к тому и приведется есть еще идеи? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 12:29 |
|
||
|
Предупреждение компилятора (inline-функция)
|
|||
|---|---|---|---|
|
#18+
как я понял встраиваемые функции не могут вовзращать нестандартные типы (объекты и т.п.) с простыми типами все ок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 13:06 |
|
||
|
Предупреждение компилятора (inline-функция)
|
|||
|---|---|---|---|
|
#18+
проблема в том что оператор +() это тоже функция и она не инлайнится.. (почему - другой вопрос :-)) смотри её код.. __declspec(noinline) либо ещё чего :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 13:37 |
|
||
|
Предупреждение компилятора (inline-функция)
|
|||
|---|---|---|---|
|
#18+
adm.Beatто был лишь пример. более реальный (а почему бы не встроить?): inline AnsiString GetFormSID(TForm *Form) { return Form->ClassName(); } аа. дык Виртуальный метод может быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 13:42 |
|
||
|
Предупреждение компилятора (inline-функция)
|
|||
|---|---|---|---|
|
#18+
Палестинецпроблема в том что оператор +() это тоже функция и она не инлайнится.. (почему - другой вопрос :-)) смотри её код.. __declspec(noinline) либо ещё чего :-) почему компилер не вставляет вызов оператора (функции) в таком случае (т.е. по приниципу define)? >>аа. дык Виртуальный метод может быть? up ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 14:02 |
|
||
|
Предупреждение компилятора (inline-функция)
|
|||
|---|---|---|---|
|
#18+
Все посты в треде относительно почему оно не инлайнится есть не более чем измышления постящих. Такая маленькая функция конечно вполне хороший кандидат на inline. Виртуальные методы можно инлайнить (только не всегда будут они инлайниться). Инлайн-функции могут вовзращать все что угодно, ограничений нет. Инлайнится или нет оператор + (или любая другая функция) к делу никак не относится. Надо помнить, что inline - это не более чем рекомендация компилятору, он может очень легко ей не следовать, это его право. Обычно компилятор имеет другую нестандартную инструкцию, жесткую, которая является требованием эту функцию заинлайнить. Там уже будет при неудаче ошибка. Почему компилятору не нравится return - я не знаю, возможно потому что должен сконструироваться и вернутся временный объект, но почему его нельзя инлайнить - я не понимаю. Можно попробовать возвращать константную ссылку (если есть на что, конечно ) как то: inline const AnsiString& TItemStyle::GetRegValueBackColor(void) { ... } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 17:22 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34199880&tid=2029825]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
180ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 216ms |
| total: | 501ms |

| 0 / 0 |
