реклама на сайте
подробности

 
 
> Совместное использование *.сpp файлов и *.c, Не компилируются совместно файлы Си и Си++
kolobochishe
сообщение Jun 9 2011, 07:22
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 14-04-10
Из: Россия, г.Челябинск
Пользователь №: 56 634



Вот такая ошибка при вызове функции написанной в *.cpp файле из *.с файла

Linking
Error[Li005]: no definition for "plot_spectrum" [referenced from C:\ÐÀÁÎÒÀ\ÐÀÇÐÀÁÎÒÊÈ\ÏÐÎÅÊÒÛ\ÄÐÀÊÎÍ\Ðåãèñòðàòîðû\Ïðîøèâêà\
LPC3250 GUI_RTOS\arm\PowerPac\BoardSupport\NXP\LPC3250\Output\LPC3250\Debug_SDRAM\Obj\DRAGON_BS1_GUI.o]
Error while running Linker

Функция объявлена в соответствующем *.h файле. Он подключен везде, где требуется.
Go to the top of the page
 
+Quote Post
4 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 59)
MrYuran
сообщение Jun 9 2011, 07:43
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



В хедерах си-шных модулей надо вставить скобки
Код
#ifdef __cplusplus
BEGIN_EXTERN_C
#endif
...
#ifdef __cplusplus
END_EXTERN_C
#endif

, где
Код
#define BEGIN_EXTERN_C           extern "C" {
#define END_EXTERN_C             }


Компилировать и линковать в режиме "плюсов"


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 9 2011, 07:46
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Проще прямо написать
Код
#ifdef __cplusplus
extern "C" {
#endif
...
#ifdef __cplusplus
}
#endif


Сообщение отредактировал IgorKossak - Jun 9 2011, 07:51
Go to the top of the page
 
+Quote Post
kolobochishe
сообщение Jun 9 2011, 08:05
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 14-04-10
Из: Россия, г.Челябинск
Пользователь №: 56 634



Цитата(MrYuran @ Jun 9 2011, 12:43) *
В хедерах си-шных модулей надо вставить скобки
Код
#ifdef __cplusplus
BEGIN_EXTERN_C
#endif
...
#ifdef __cplusplus
END_EXTERN_C
#endif

, где
Код
#define BEGIN_EXTERN_C           extern "C" {
#define END_EXTERN_C             }


Компилировать и линковать в режиме "плюсов"


Компилится. Только не в хэдерах си-шных модулей, а в хэдере си++ модуля. У меня только так заработало.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Jun 9 2011, 09:47
Сообщение #5


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(kolobochishe @ Jun 9 2011, 12:05) *
Компилится. Только не в хэдерах си-шных модулей, а в хэдере си++ модуля. У меня только так заработало.

Можно ставить с любых заголовочных файлах, которые включаются в проект для с и cpp.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
inventor
сообщение Jun 16 2011, 18:24
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Цитата(mdmitry @ Jun 9 2011, 13:47) *
Можно ставить с любых заголовочных файлах, которые включаются в проект для с и cpp.

в принципе если извратица то можно из сишной программы вызывать с++ модули.
у вас проблема в том, что С++ делает такую хрень как name mangling.
то есть при линковке имена ваших функций становятся такими что их сишный линкер
не может понять.
решение которое вам подсказали вверху заставляет линкер не искажать имя функции.
но если вы попробуете предложить несколько функций с одинаковым названием-перегруженные,
то опять получите ошибку.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 17 2011, 10:24
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(inventor @ Jun 16 2011, 22:24) *
в принципе если извратица то можно из сишной программы вызывать с++ модули.


Если вы можете компилировать с++ модули (компилятор позволяет), то никто не мешает сказать ему, чтобы для компиляции .с модулей тоже вызывался С++ компилятор. На худой случай, просто переименовать *.с в *.срр.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 17 2011, 12:54
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sergeeff @ Jun 17 2011, 13:24) *
просто переименовать *.с в *.срр.

С и С++ два разных языка - сколь-нибудь объемный и что-то делающий исходник на 'C' (не "Hello World!" ) плюсовым компилятором не откомпилится. Потребуются правки. В большей частью мелкие, но местами и принципиально все меняющие.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 17 2011, 13:20
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(zltigo @ Jun 17 2011, 16:54) *
С и С++ два разных языка - сколь-нибудь объемный и что-то делающий исходник на 'C' (не "Hello World!" ) плюсовым компилятором не откомпилится. Потребуются правки. В большей частью мелкие, но местами и принципиально все меняющие.


Хоть один пример.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 17 2011, 13:33
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sergeeff @ Jun 17 2011, 16:20) *
Хоть один пример.

Берете свой проект, компилите плюсовым. Получаете примеры sm.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 17 2011, 13:40
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (sergeeff @ Jun 17 2011, 16:20) *
Хоть один пример.
Область видимости констант, неявное приведение void * к любому указателю в С. Это так, навскидку.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Danis
сообщение Jun 17 2011, 13:57
Сообщение #12


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



Цитата(sergeeff @ Jun 17 2011, 16:20) *
Хоть один пример.


для С++ NULL не типизирован явно, как в Си, так что приходиться делать так:

/* Define NULL pointer value */
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif


--------------------
Magic Friend
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 17 2011, 13:59
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Сергей Борщ @ Jun 17 2011, 16:40) *
Область видимости констант, неявное приведение void * к любому указателю в С. Это так, навскидку.

Декларация и инициализация стуктур и константных объектов, тип литералов типа 'abcd', объявления типов в sizеof, , функции с переменным количеством аргументов, еще некоторые до сих пор не польззуются прототипами функций sm.gif и C а не C99,..... В общем лучше попробовать компильнуть sm.gif
Вообще-то в С++ стандарте, помнится, было целое приложение посвященное проблемам несовместимости.

P.S.
Да. Посмотрел - Annex C Compability. Единственно, что там явно не C99. Да и многие 'С' компиляторы будут на некоторые конструкции хоть не ошибки, но warnings выдавать.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 17 2011, 14:09
Сообщение #14


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Сергей Борщ @ Jun 17 2011, 20:40) *
Область видимости констант, неявное приведение void * к любому указателю в С. Это так, навскидку.

Ещё работа с перечислимыми типами.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 18 2011, 09:38
Сообщение #15


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



А наоборот может быть - ошибка при вызове из си++ файла функции, объявленной в простом си исходнике?

Ошибка такая же - Li005 - линкер не может найти определение функции... sad.gif
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 18 2011, 13:51
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(sonycman @ Jun 18 2011, 12:38) *
А наоборот может быть - ошибка при вызове из си++ файла функции, объявленной в простом си исходнике?

Ошибка такая же - Li005 - линкер не может найти определение функции... sad.gif


Вы хоть эту ветку читаете? Про extern "C"?
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 19 2011, 17:36
Сообщение #17


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(sergeeff @ Jun 18 2011, 17:51) *
Вы хоть эту ветку читаете? Про extern "C"?

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

В этом случае ведь name mangling не работает?

Ошибка уходит, когда принудительно включаю компиляцию си файлов в режиме си++.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jun 19 2011, 18:04
Сообщение #18


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(sonycman @ Jun 19 2011, 23:36) *
Но когда наоборот - си++ модуль в упор не видит обычную си функцию?

Именно для этого случая и нужно в заголовочных файлах от си функций писать extern "C". Иначе C++ ожидает функции с замангленными именами.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 19 2011, 19:14
Сообщение #19


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(AHTOXA @ Jun 19 2011, 22:04) *
Именно для этого случая и нужно в заголовочных файлах от си функций писать extern "C". Иначе C++ ожидает функции с замангленными именами.

Понятно. Значит, всегда, когда плюсы имееют дело с ассемблерными или обычными сишными модулями (или наоборот) необходимо юзать этот костыль.
Спасибо beer.gif
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 19 2011, 20:30
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(sonycman @ Jun 19 2011, 22:14) *
Понятно. Значит, всегда, когда плюсы имееют дело с ассемблерными или обычными сишными модулями (или наоборот) необходимо юзать этот костыль.
Спасибо beer.gif


А это вовсе не костыль, а возможность из С++ использовать С/ASM модули. Вам эта возможность не нравится?

Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 19 2011, 21:17
Сообщение #21


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(sergeeff @ Jun 20 2011, 00:30) *
А это вовсе не костыль, а возможность из С++ использовать С/ASM модули. Вам эта возможность не нравится?

Я об этом знал, но считал, что это работает только в сторону от си++ к си.
Не думал, что плюсы будут манглить даже обычную сишную функцию, подключенную через хидер laughing.gif
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 20 2011, 02:59
Сообщение #22


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(sonycman @ Jun 20 2011, 04:17) *
Я об этом знал, но считал, что это работает только в сторону от си++ к си.
Не думал, что плюсы будут манглить даже обычную сишную функцию, подключенную через хидер laughing.gif

Если компиляете в С++ режиме, то все функции будут кодироваться по-плюсатому. Ведь в плюсах обычное дело та же перегрузка имён функций, и как компилятор должен догадаться, какие функции у вас имеют С-связывание, а какие С++ связывание. Для этого и введена спецификация связывания extern "<Lang>", где <Lang> - отличный от С++ язык (там не обязательно должен быть С, хотя этот вариант встречается в подавляющем большинстве случаев).


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
XVR
сообщение Jun 20 2011, 08:42
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(sonycman @ Jun 20 2011, 01:17) *
Не думал, что плюсы будут манглить даже обычную сишную функцию, подключенную через хидер laughing.gif
А откуда С++ знать, что это 'обычная С функция'? Для этого extern "C" и предназначен rolleyes.gif
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 20 2011, 09:13
Сообщение #24


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(dxp @ Jun 20 2011, 06:59) *
Если компиляете в С++ режиме, то все функции будут кодироваться по-плюсатому. Ведь в плюсах обычное дело та же перегрузка имён функций, и как компилятор должен догадаться, какие функции у вас имеют С-связывание, а какие С++ связывание. Для этого и введена спецификация связывания extern "<Lang>", где <Lang> - отличный от С++ язык (там не обязательно должен быть С, хотя этот вариант встречается в подавляющем большинстве случаев).

Спасибо.
Интересно, а какие ещё есть идентификаторы <Lang>?

Цитата(XVR @ Jun 20 2011, 12:42) *
А откуда С++ знать, что это 'обычная С функция'? Для этого extern "C" и предназначен rolleyes.gif

Так тело-то этой функции - в обычном .c файле!
Компилер что, манглит сразу имя функции по её объявлению в хидере, не заглядывая даже в определение?
Вот шустрый какой! biggrin.gif
Go to the top of the page
 
+Quote Post
XVR
сообщение Jun 20 2011, 09:21
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(sonycman @ Jun 20 2011, 13:13) *
Так тело-то этой функции - в обычном .c файле!
А как компилятор в процессе компиляции файла А узнает о теле функции в файле Б? Он же их отдельно компилирует
Цитата
Компилер что, манглит сразу имя функции по её объявлению в хидере, не заглядывая даже в определение?
Разумеется. Тело функции его не интересует (его вообще может не быть)
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 20 2011, 09:34
Сообщение #26


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(XVR @ Jun 20 2011, 13:21) *
Разумеется. Тело функции его не интересует (его вообще может не быть)

Понятно, теперь буду знать. Спасибо! rolleyes.gif
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 20 2011, 12:04
Сообщение #27


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(sonycman @ Jun 20 2011, 16:13) *
Интересно, а какие ещё есть идентификаторы <Lang>?

Мне попадалось FORTRAN.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 20 2011, 12:15
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (dxp @ Jun 20 2011, 14:04) *
Мне попадалось FORTRAN.

И PASCAL



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
inventor
сообщение Jun 22 2011, 10:52
Сообщение #29


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Кстати, никогда не делайте программы для DSP и контроллеров на С++
выгоды которые вы получите весят меньше чем недостатки и косяки
которые вы встретите и не сможете устранить.
То есть делайте свои программы исключительно на C
а не С++.
Безо всяких "extern C"/
Все таки язык С++ был разработан совсем для других целей.
Ну там базы данных писать и что-то подобное большое.
В качестве системного языка он не подходит.
По моему скромному мнению.
Хотя находятся герои которые для QNX что-то на С++ ваяют.

Сообщение отредактировал inventor - Jun 22 2011, 10:53
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 22 2011, 12:13
Сообщение #30


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(inventor @ Jun 22 2011, 17:52) *
Кстати, никогда не делайте программы для DSP и контроллеров на С++

sm.gif
Вам сюда.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
inventor
сообщение Jun 22 2011, 13:59
Сообщение #31


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Цитата(dxp @ Jun 22 2011, 16:13) *
sm.gif
Вам сюда.


Для меня достаточно просто посмотреть на код С++ в асме-
что он там плодит, чтобы больше так никогда не делать.
Все это красиво получается в исходниках, но не в работе.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jun 22 2011, 14:48
Сообщение #32


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(inventor @ Jun 22 2011, 16:52) *
Все таки язык С++ был разработан совсем для других целей.
Ну там базы данных писать и что-то подобное большое.
В качестве системного языка он не подходит.
По моему скромному мнению.
Хотя находятся герои которые для QNX что-то на С++ ваяют.
Вот сразу видно - пришёл человек знающий, глубоко разбирающийся в предмете. Всё чётко разложил по полочкам, разоблачил мифы, расписал недостатки, прямо и без обиняков. Теперь мы будем знать, какая кака этот C++. Спасибо вам, уважаемый inventor!
biggrin.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 22 2011, 14:48
Сообщение #33


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(inventor @ Jun 22 2011, 20:59) *
Для меня достаточно просто посмотреть на код С++ в асме-
что он там плодит, чтобы больше так никогда не делать.
Все это красиво получается в исходниках, но не в работе.

Заинтриговали. И что же он там такое плодит? Можно пример?


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 22 2011, 17:52
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (dxp @ Jun 22 2011, 17:48) *
Заинтриговали. И что же он там такое плодит?

А, полагаю, все как обычно, например, то, что видит человек сумевший написать 100 команд (условно) на ASM, при виде листинга С/C++ программы хотя-бы на десяток килобайт. А видит он количество команд выходящее за рамки его разумения, вот и все sad.gif. Занавес. Однажды я наблюдал шоковое состояние когда считающемуся достаточно опытным ASM писателю предъявил вместо его программы на ASM, которая,
1) была размером под 8K;
2) генерировала иногда в ответ не такой, сигнал, какой хотел заказчик;
3) не тянула генерацию оного сигнала выше 12KHz (заказчик уже соглашался ставить другой контроллер ).
Сишную, писанную за воскресенье, на пару килобайт меньше, правильно работающую, и к тому-же успевающую где-то под 40KHz работать.
Он думал, а может и сейчас так думает, что его просто дурят прокручивая ему на экране LeCroy какую-то обманку sm.gif. Поскольку доподлинно знал, что С есть гуано sm.gif, поскольку тоже что-то вроде "просто посмотреть на код С++ в асме что он там плодит,"


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
XVR
сообщение Jun 22 2011, 19:19
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(inventor @ Jun 22 2011, 17:59) *
Для меня достаточно просто посмотреть на код С++ в асме-
что он там плодит, чтобы больше так никогда не делать.
Угу, видели видели. Начинается с воплей 'какое С/С++ гуано', а заканчивается открытием, что у С/С++ компиляторов оказывается есть разные уровни оптимизации и дебаггерные режимы laughing.gif
Go to the top of the page
 
+Quote Post
inventor
сообщение Jun 23 2011, 11:21
Сообщение #36


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Цитата(XVR @ Jun 22 2011, 23:19) *
Угу, видели видели. Начинается с воплей 'какое С/С++ гуано', а заканчивается открытием, что у С/С++ компиляторов оказывается есть разные уровни оптимизации и дебаггерные режимы laughing.gif

код написанный на С++
исполняется дольше кода написанного на С или на asm
хоть ты усрись с оптимизацией
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 23 2011, 11:30
Сообщение #37


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(inventor @ Jun 23 2011, 15:21) *
код написанный на С++
исполняется дольше кода написанного на С или на asm
хоть ты усрись с оптимизацией

Да и на здоровье.
Ну вот какая, к примеру, разница, находится процессор в IDLE 99% или 98,9% времени?
То же самое в большинстве случаев можно сказать и про объём.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 23 2011, 12:35
Сообщение #38


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(inventor @ Jun 23 2011, 18:21) *
код написанный на С++
исполняется дольше кода написанного на С или на asm
хоть ты усрись с оптимизацией

Это такой закон природы или что? Пример покажите?


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
inventor
сообщение Jun 23 2011, 16:41
Сообщение #39


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Цитата(dxp @ Jun 23 2011, 16:35) *
Это такой закон природы или что? Пример покажите?

Нет.
Это объективная реальность sm.gif
Сейчас нет под рукой примера, завтра что-нибудь нарою.
Go to the top of the page
 
+Quote Post
XVR
сообщение Jun 23 2011, 17:54
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(inventor @ Jun 23 2011, 15:21) *
код написанный на С++
исполняется дольше кода написанного на С или на asm

Угу, угу. Вспоминается (с баша вроде) -
Цитата
- Вот, моя программа в 10 раз меньше, в 3 раза быстрее и памяти жрет в 5 раз меньше, чем твоя!
- Зато моя работает, а твоя нет.

Желаю успехов в написании программ на ассемблере, ну к примеру, для Itanium'а laughing.gif
Цитата
хоть ты усрись с оптимизацией

Это с опытом обычно проходит 1111493779.gif
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 24 2011, 10:45
Сообщение #41


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Уж сколько понаписано про преждевременную оптимизацию, а воз и ныне там. При программировании на С++, после некоторого периода времени по его освоению и написания собственного прикладного инструментария (библиотек необходимых классов), голова освобождается от необходимости "борьбы с мелочами". Занимаешься собственно решением поставленной задачи, а не поиском какого-нибудь побочного эффекта из-за преобразования указателя к (void *).

Думается уважаемый inventor долго нам будет пример искать.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 24 2011, 13:15
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sergeeff @ Jun 24 2011, 13:45) *
Уж сколько понаписано

глупостей
QUOTE
про преждевременную оптимизацию, а ....

Не все правда глупости, но 95% процентов воспринимают подобные речи о "преждевременности" таким образом, что в результате делают глупости sad.gif.

А причем тут преждевременная оптимизация вообще-то???


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
inventor
сообщение Jun 24 2011, 15:50
Сообщение #43


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Цитата(zltigo @ Jun 24 2011, 17:15) *
глупостей

Не все правда глупости, но 95% процентов воспринимают подобные речи о "преждевременности" таким образом, что в результате делают глупости sad.gif.

А причем тут преждевременная оптимизация вообще-то???


Не было времени сегодня искать пример,
щас попробую его описать.
Процессор работает на чатоте 14 Мгц
обменивается с другим процом на частоте 1Мгц.
На асме около 70 строк кода обработчика прерывания.
На С примерно в два раза больше.
Программа на С работает на пределе.
Но не сбоит.
Даже не представляю как это будет работать на С++.
Да...вся программа умещается во внутренней памяти DSP.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 25 2011, 09:41
Сообщение #44


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(zltigo @ Jun 24 2011, 16:15) *
глупостей

Не все правда глупости, но 95% процентов воспринимают подобные речи о "преждевременности" таким образом, что в результате делают глупости sad.gif.

А причем тут преждевременная оптимизация вообще-то???


А что, вопли про громоздкий код С++ по сравнению с С не есть пример "преждевременной оптимизации"? Нет пока не одного реального примера сравнения быстродействия задачи при реализации там и там, а вопли есть. По моему - типичный пример
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 25 2011, 09:47
Сообщение #45


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sergeeff @ Jun 25 2011, 11:41) *
А что, вопли про громоздкий код С++ по сравнению с С не есть пример "преждевременной оптимизации"?
....
По моему - типичный пример

После этого я совсем перестал понимать смысл sad.gif вкладываемый Вами в словосочетания "преждевременная оптимизация".
Ну да ладно, переживу.



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 25 2011, 17:38
Сообщение #46


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(zltigo @ Jun 25 2011, 12:47) *
После этого я совсем перестал понимать смысл sad.gif вкладываемый Вами в словосочетания "преждевременная оптимизация".
Ну да ладно, переживу.


По-моему, вполне понятно о чем идет речь. Заявляется (голословно), что С++ язык медленный, а С и, уж конечно, ASM, намного быстрее. Посему, задача изначально проектируется не на С++. Ровно про это писал Александреску со-товарищи, а именно, сначала сделайте работоспособное решение, а потом, изучайте узкие места и их оптимизируете. Вроде я "мастерам" не противоречу, говоря о "преждевременной оптимизации"-
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 25 2011, 18:53
Сообщение #47


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sergeeff @ Jun 25 2011, 19:38) *
Ровно про это писал Александреску со-товарищи, а именно, сначала сделайте работоспособное решение, а потом, изучайте узкие места и их оптимизируете.

Вы опять с этим Александреску с его обобщенно-шаблонно-абстрактным программированием sad.gif.
Нам такие товарищи эмбеддерам совсем НЕ товарищи. Думать о построении системы и узких местах нужно СРАЗУ, а не потом рассматривая что такое выросло и как "оптимизировать" сие ЗАПЛАТКАМИ. Все узкие места должны быть ИЗВЕСТНЫ на этапе проектирования, и сделаны ОЦЕНКИ критичности этих мест до того, как будет написана левой ногой кучи кода.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 25 2011, 22:44
Сообщение #48


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(zltigo @ Jun 25 2011, 21:53) *
Вы опять с этим Александреску с его обобщенно-шаблонно-абстрактным программированием sad.gif.
Нам такие товарищи эмбеддерам совсем НЕ товарищи. Думать о построении системы и узких местах нужно СРАЗУ, а не потом рассматривая что такое выросло и как "оптимизировать" сие ЗАПЛАТКАМИ. Все узкие места должны быть ИЗВЕСТНЫ на этапе проектирования, и сделаны ОЦЕНКИ критичности этих мест до того, как будет написана левой ногой кучи кода.


Ну ладно. Александреску нам не авторитет. Мне тоже не все его мысли и рецепты нравятся, хотя встречаются и очень изящные решения. Посмотрим с другой стороны. Имеем в начале работы процессор, компилятор и стандартную библиотеку. Начинаем работать? Начинаем. Прикидываем все, где чего и как по-лучше написать. Сделали. И вдруг (или не вдруг) натыкаемся на то, что стандартная memcpy полная г...о (на форуме мы это неоднократно обсуждали), а мы ее пользуем в хвост и в гриву. Затем выясняется, что и memset такая же. А потом понимаем, что вся куча написана через жо...у. Мы про это тоже СРАЗУ должны были знать на начальном этапе проектирования? Откуда? Нам фирма-изготовитель компилятора "любезно" рассказала?

Вы всегда можете предсказать какой именно алгоритм сортировки окажется самым быстрым на вашем конкретном типе данных? Ой ли.

С другой стороны, может и с этими хреновыми (не оптимальными) функциями все вполне бы катило и заказчика устраивало? Мы тогда жили бы себе в спокойном чувстве полного самоудовлетворения и над всей этой ерундой и не задумывались.

Резюме (мое личное, может и неправильное) - невозможно все заранее предусмотреть (кое что можно), хотя бы из-за ограниченности собственных временнЫх возможностей и сил. Проект всегда итерационен (почти).
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jun 26 2011, 05:03
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(sergeeff @ Jun 26 2011, 01:44) *
Проект всегда итерационен (почти).

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


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
inventor
сообщение Jun 26 2011, 06:35
Сообщение #50


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Цитата(sergeeff)
Сделали. И вдруг (или не вдруг) натыкаемся на то, что стандартная memcpy полная г...о (на форуме мы это неоднократно обсуждали), а мы ее пользуем в хвост и в гриву. Затем выясняется, что и memset такая же. А потом понимаем, что вся куча написана через жо...у. Мы про это тоже СРАЗУ должны были знать на начальном этапе проектирования? Откуда? Нам фирма-изготовитель компилятора "любезно" рассказала?


Именно так и есть, обычно все библиотеки САМ перекопилируешь-выкидывая оттуда
все ненужное и исправляя ихние ошибки.
Что в этом неправильного?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 26 2011, 08:26
Сообщение #51


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sergeeff @ Jun 26 2011, 00:44) *
Имеем в начале работы процессор, компилятор и стандартную библиотеку.

Забыли главное - голову на плечах и опыт отличный от нуля. Без этих двух вещей получаем воинствуещего ламера inventor sad.gif.
QUOTE
Проект всегда итерационен (почти).

Подход а-ля Александреску характерен для научных работ - давайте на бумаге/модели получим, хоть какой-то результат и потом подумаем, что дальше делать. У инженеров в сложных случаях тоже есть понятие НИОКР, но это именно заранее запланированный этап.


QUOTE (inventor @ Jun 26 2011, 08:35) *
Именно так и есть, обычно все библиотеки САМ перекопилируешь-выкидывая оттуда
все ненужное и исправляя ихние ошибки.

sm.gif sm.gif sm.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 26 2011, 09:37
Сообщение #52


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(zltigo @ Jun 26 2011, 11:26) *
Забыли главное - голову на плечах и опыт отличный от нуля.


Это само собой подразумевалось. Однако, при переходе на новый процессор+компилятор всегда есть определенная доля неизведанности, понимание которой приходит не СРАЗУ, а по мере работы над проектом.

Потом, мне кажется, спор возник из-за наличия двух принципиально различных типов проектов. Первые, по типу обучения в вузе "зазубрил/сдал/забыл", а вторые - большие проекты, пишущиеся и развивающиеся годами. Коллеги работают в разных типах проектов, отсюда и разное видение проблем.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 26 2011, 10:18
Сообщение #53


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sergeeff @ Jun 26 2011, 12:37) *
Однако, при переходе на новый процессор+компилятор всегда есть определенная доля неизведанности, понимание которой приходит не СРАЗУ, а по мере работы над проектом.

На новый процессор - для этого существуют отладочные платы - купил, попробовал, в том числе и принципиально узки места по железу/софту, осознал...
С компиляторами все еще проще - они достаточно все одинаково хороши и обычно кроссплатформенны, посему, как правило, компилятор уже достаточно знаком.
Исключения встречаются, но они скорее всего уже именно исключения, если необходимо вдруг наконец-то заставить работать что-то старое неведомо кем сделанное. И тогда имеем какой-нибудь достаточно ущербный контроллер и такой-же замерший в прошлом компилятор. Я в прошлом году дважды с таким сталкивался - PIC16 + Hi-Tech C компилятор и M8C + ImageCraft. Это дополнительно создает некоторые хлопоты. Но это был такой прыжок в прошлое. Нехарактерный.
QUOTE
Потом, мне кажется, спор возник из-за наличия двух принципиально различных типов проектов.

Категорически нет. Проблема просто у уровне знаний - ниже плинтуса, или выше.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jun 26 2011, 10:39
Сообщение #54


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(zltigo @ Jun 26 2011, 13:18) *
Категорически нет. Проблема просто у уровне знаний - ниже плинтуса, или выше.


Согласитесь,что проект <4Kb и проект >1Mb несколько отличаются. И технологии при их реализации тоже.

А вообще, солнышко светит, лето, воскресенье. Надо пользоваться случаем и отдыхать, чего всем и желаю.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 27 2011, 06:43
Сообщение #55


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(zltigo @ Jun 25 2011, 22:53) *
Все узкие места должны быть ИЗВЕСТНЫ на этапе проектирования, и сделаны ОЦЕНКИ критичности этих мест до того, как будет написана левой ногой кучи кода.

Да, но не надо переживать о нескольких лишних байтах/циклах там, где это совершенно некритично.
Некоторые в ужасе хватаются за голову, видя в контроллерном проекте float.
Ну а что такого? Если скорость всех расчётов на порядки выше, чем скорость поступления сэмплов с АЦП.
Вот это видимо и имелось в виду.
Не надо пытаться заоптимизировать всё до смерти без насущной необходимости.
Иметь представление об узких местах и проектировать с их учётом - надо.

А про оптимизацию, по-моему, Макконнел рассуждал в "совершенном коде".
У него было там что-то типа "мысли об оптимизации могут совершенно заблокировать разработку проекта. "

Вот нашёл, цитата из книги:
Цитата
Как правило, не стоит тратить много усилий на оптимизацию отдельных мето-
методов. Эффективность в основном определяется конструкцией высокого уровня.
Обычно микрооптимизация выполняется, только когда закончена вся программа
и выясняется, что высокоуровневая конструкция исчерпала свои возможности
обеспечить нужную производительность. Не теряйте время на вылизывание от-
отдельных методов, пока не выяснится, что это необходимо.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 27 2011, 06:57
Сообщение #56


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(inventor @ Jun 24 2011, 22:50) *
Не было времени сегодня искать пример,
щас попробую его описать.
Процессор работает на чатоте 14 Мгц
обменивается с другим процом на частоте 1Мгц.
На асме около 70 строк кода обработчика прерывания.
На С примерно в два раза больше.
Программа на С работает на пределе.
Но не сбоит.
Даже не представляю как это будет работать на С++.
Да...вся программа умещается во внутренней памяти DSP.

И где тут пример? Привели какие-то общие фразы, дескать, тут быстрее, тут медленее, а С++ тут вообще в пролёте. Где аргументы? Где доказательства? Реальный пример давайте. Например, вот написали протокол обмена по UART на С++, оказалось в два раза медленнее, чем на С. Вот и давайте оба варианта (на С и на С++) в студию. Это будет пример, который можно обсуждать.

Цитата(zltigo @ Jun 26 2011, 01:53) *
Вы опять с этим Александреску с его обобщенно-шаблонно-абстрактным программированием sad.gif.
Нам такие товарищи эмбеддерам совсем НЕ товарищи.


Цитата(zltigo @ Jun 26 2011, 15:26) *
Подход а-ля Александреску характерен для научных работ - давайте на бумаге/модели получим, хоть какой-то результат и потом подумаем, что дальше делать. У инженеров в сложных случаях тоже есть понятие НИОКР, но это именно заранее запланированный этап.

Насчёт Александреску вынужден не согласиться. У него показаны приёмы, как сделать написание кода более удобным и безопасным. Это, конечно, требует труда вникать (например, списки типов я так до конца и не вкурил - хоть и интересно, но актуальности пока нет и не предвидится, хотя имею в виду). Но у него помимо "тяжёлых" вещей вроде разработки на основе стратегий, немало просто полезных фишек вроде "распознавания конвертируемости и наследования на этапе компиляции". Конечно, подобные приёмы возникли от недостатка соответствующих средств в самом языке, но само решение очень красиво и, главное, в отличие от typeof(), выполняется на этапе компиляции. Или его менеджер памяти, который оптимизирован (скорость и компактность) для работы небольшими (десятки байт) объектами. Для AVR, конечно, не пойдёт, но на каком-нить АРМе уже вполне может оказаться кстати.

Вообще, Александреску представляет очень интересный взгляд на хорошо известные штатные языковые средства, и взгляд этот у него очень нестандартен. Даже если не подсаживаться на эти приёмы, поизучать (даже просто прочитать на разок) оказывается очень нелишним. Достойное чтиво и неплохая разминка для мозгов.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 27 2011, 07:02
Сообщение #57


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(dxp @ Jun 27 2011, 10:57) *
Даже если не подсаживаться на эти приёмы, поизучать (даже просто прочитать на разок) оказывается очень нелишним. Достойное чтиво и неплохая разминка для мозгов.

Согласен, хотя я пока ниасилил. Выглядит как книга магических заклинаний: завораживает, но ничего не понятно! Остаётся пользоваться готовыми рецептами, самому готовить ещё учиться и ещё два раза.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 27 2011, 08:20
Сообщение #58


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (dxp @ Jun 27 2011, 08:57) *
Насчёт Александреску вынужден не согласиться......

Я не об этом - он реально занимается решением ДРУГИХ задач и выхватывать из его книг какие-то слова, например, о вреде преждевременной оптимизации и поминать их всуе, как минимум, не корректно.
QUOTE (MrYuran @ Jun 27 2011, 08:43) *
Вот нашёл, цитата из книги:

Золотые слова - подпишусь под каждым. Только вот К ЖУТЧАЙШЕМУ моему сожалению толпы эмбеддерщиков об оптимизации на верхних уровнях думают с трудом sad.gif. Зато по рассуждать о том что на десяти командах они на АSM обгонят компилятор это всегда готовы sad.gif. А услышав слова о вреде преждевременной оптимизации поснимают галочки где-нибудь в IDE и скажут, что Александреску с Макконнелом так велят sad.gif.
Умение оптимизировать на верхних уровнях определяется в том числе и инструментальными средствами которые человек освоил. Одно дело, когда человек пошел от сохи железа и постиг программирование в кодах (на самом деле он считает, что пишет, на ASM, но реально это настолько минималистичное использование даже ASM, что это практически кодирование sad.gif). Другое, когда уже понимает и имеет успешный опыт, например, в C++. Это другие горизонты, другое понимание и другие возможности.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 27 2011, 10:44
Сообщение #59


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(MrYuran @ Jun 27 2011, 14:02) *
Согласен, хотя я пока ниасилил. Выглядит как книга магических заклинаний: завораживает, но ничего не понятно! Остаётся пользоваться готовыми рецептами, самому готовить ещё учиться и ещё два раза.

Мне тоже не всё понятно было (пока её только на разок прошёл), но кое-что уже в кассу. Например, подсмотрел приём, который он там реализует для стратегий:
Код
template<typename T> class A : public T { ... };

Т.е. шаблон, позволяющий генерировать реализацию с выбором базы для неё. Простая, в общем-то, штука, но как-то само в голову не пришло. Эту вещь реально поюзал.

Или реализация класса Conversion (п.2.7). Довольно простое и изящное решение на основе свойств оператора sizeof(). Пока применить не пришлось, но имею в виду. Очень нравится незамутнённый нестандартный взгляд на привычные, уже набившие оскомину вещи. Что ни говори, а Александреску молодец, и каждый при желании может там найти для себя что-то полезное и интересное.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Jul 4 2011, 01:14
Сообщение #60


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(inventor @ Jun 23 2011, 07:21) *
код написанный на С++
исполняется дольше кода написанного на С или на asm
хоть ты усрись с оптимизацией


Блин ну ладно еще асм с с сравнивать, это еще как бы куда ни шло, хотя с оговоркой - кто писал си и кто писал асм. Но С++ с С противопоставлять - вы понимаете что что С++ принципиально не отличается от С?
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.04159 секунд с 7
ELECTRONIX ©2004-2016