Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« : 15-02-2008 06:42 » |
|
A member function may be defined (8.4) in its class definition, in which case it is an inline member function (7.1.2) - так функция тогда что ли автоматом inline становится, хотя это явно не указано ? Непоняяяятно что то)
|
|
« Последнее редактирование: 15-02-2008 11:23 от Вад »
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #1 : 15-02-2008 07:40 » |
|
так функция тогда что ли автоматом inline становится, хотя это явно не указано ? Если она содержит реализацию внутри определения класса - да. Это означает, что такая функция является inline-функцией (без указания слова inline).
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #2 : 15-02-2008 07:59 » |
|
нифига себе... И зачем такое щасте? А если я не хочу инлайн , но выносить из класса реализацию метода не хочу ?
|
|
|
Записан
|
|
|
|
Вад
|
|
« Ответ #3 : 15-02-2008 08:56 » |
|
Алексей1153++, ну так в стандарте же сказано: не должно два раза включаться не-инлайновых методов. Кто поручится, что твой класс не будет включён при компиляции более чем одного .cpp-файла? Кстати, во время поиска ответа на вопрос об операторах и иных функциях в STL-е натыкался на inline-определения приличных по размеру операторов - на скрин кода и более. Полагаю, как-то это компилятор оптимизирует?
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #4 : 15-02-2008 09:03 » |
|
в том то и фишко, что у меня есть такие методы - и поболее, чем на пол экрана. Надо будет пересмотреть код ) И заодно лишний раз порядок навестить )
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #5 : 15-02-2008 09:15 » |
|
Алексей1153++, ну так в стандарте же сказано: не должно два раза включаться не-инлайновых методов. Кто поручится, что твой класс не будет включён при компиляции более чем одного .cpp-файла? Воистину! Только inline поможет.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #6 : 15-02-2008 09:49 » |
|
я зыркнул в отладочном ассемблерном коде - усёфпорядке, авто-инлайн для большого метода точно не случается
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #7 : 15-02-2008 09:59 » |
|
Лёш, покажи свой "большой" метод. В нём наверняка есть несколько точек выхода, а такие методы по определению не могут быть inline.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Sands
Помогающий
Offline
|
|
« Ответ #8 : 15-02-2008 10:21 » |
|
Спасибо всем за помощь! На данном етапе проблема решена. Возникнут новые - отпишусь ))
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #9 : 15-02-2008 10:30 » |
|
Джон, да, несколько
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #10 : 15-02-2008 10:35 » |
|
Я знал, я знал! Попробуй переделать его так, чтобы был только один return.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #11 : 15-02-2008 11:08 » |
|
попробовал, всё равно 337: sss.SendSomeOfMessagesFromQueueThruSocket(4); 00440FC9 push 4 00440FCB lea ecx,[ebp-4Ch] 00440FCE call @ILT+8070(s_mail_messagez_manager::SendSomeOfMessagesFromQueueThruSocket) (00402f8b)
а дальше идёт новая строка исходника
|
|
|
Записан
|
|
|
|
Антон (LogRus)
|
|
« Ответ #12 : 17-02-2008 06:57 » |
|
Алексей1153++, насколько я помню inline это рекомендация, т.е. пожалуйсто миленький компилятор посторайся эту штуковину сделать inline.
|
|
|
Записан
|
Странно всё это....
|
|
|
RXL
|
|
« Ответ #13 : 17-02-2008 10:25 » |
|
LogRus, да, но даже если компилятор не пойдет на поводу, то все равно не будет ругаться.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Антон (LogRus)
|
|
« Ответ #14 : 18-02-2008 09:00 » |
|
RXL, не будет, это я к тому, что не следует удивлятся.
|
|
|
Записан
|
Странно всё это....
|
|
|
lapulya
Молодой специалист
Offline
|
|
« Ответ #15 : 28-05-2008 12:00 » |
|
ОФФ топ... Леш, реализация метода в самом объявлении класса (если это не вынужденная мера, ну например класс шаблонный)дале не лучшее архитектурное решение и может быть оправдано, только: 1. если необходимо увеличить скорость работы реально узкого для производительности места (но тогда она обязана быть объявлена как инлайн, и естественно удовлетворять всем ограничениям инлайн функций, а их несколько, а не только та что озвучил Джон) 2. если это вынужденная необходимость (как я сказал, если например, класс шаблонный или там например пустая реализация деструктора у интерфейса)
|
|
|
Записан
|
С уважением Lapulya
|
|
|
LifeMaker
Гость
|
|
« Ответ #16 : 01-06-2008 08:50 » |
|
Лёш, покажи свой "большой" метод. В нём наверняка есть несколько точек выхода, а такие методы по определению не могут быть inline.
не вижу проблем, не позволяющих заинлайнить метод с несколькими точками выхода... можно поподробнее?
|
|
|
Записан
|
|
|
|
|