Титла: C++ и gcc?!?!?! Публикувано от: BanishMemory в Nov 18, 2004, 13:55 ![]()
Чета една дебела книга, в която пише, че това ще бачка на всички компилатори, но работи единствено на Micro$oft Visual C++. Опитвам се да го подкарам на Dev-C++(gcc) и Borland C++, но не става. Кажете ми как да настроя компилатора за да бачка. Благодаря ви предварително ![]() Титла: C++ и gcc?!?!?! Публикувано от: the_real_maniac в Nov 18, 2004, 14:12 Ами аз (може да се каже) знам С, но не и С++ , и немога да ти кажа ,че има нещо нередно. На пръв поглед всичко ми изглежда наред. Пробвай да компилираш с g++
![]() Титла: C++ и gcc?!?!?! Публикувано от: Йордан в Nov 18, 2004, 15:16 gcc source.cpp -o binara && ./binara
...ако за това питаш и ако добре си спомням как се компилира ![]() Титла: C++ и gcc?!?!?! Публикувано от: rpetrov в Nov 18, 2004, 15:49 Пенчо бре, чети!
Пенчо не чете. ... ![]() Пенчо пак не ще. ... Петко Славейков
Изненада, обикновенно новите неща тръгват на всички други компилатори и година две след това на microsoft-ските. За мен е приятна изненада да науча, че в Visual C++ можело да се използват неща както е по дебелите книги за C++, а не да се включват някакви си измислени(с нестандартни имена) header файлове.
![]() Искам да отбележа, че трите споменати развойни среди са за windows, а пък форума е за linux. Чудя се дали да отговоря или не ![]()
С настойвачка на компилатори. ![]() По-вероятно трябва да се настои проекта в развойната среда, така че да стартира компилатора и т.н. с подходящите опции и файлове. За целта, моля те да прочетеш ПЪРВО ръководството за работа със съответната среда. P.S: Ако използваш linux или cygwin, то едно от следните неща ще ти помогне. За целта нека споменатия в темата код е записан в файла test.cpp и е отворен терминален прозорец в който въвеждаме някоя от следните команди: 1.) g++ -o test test.cpp 2.1.) gcc -o test test.cpp -lstdc++ 2.2.) gcc -x c++ -o test test.cpp -lstdc++ , където -x c++ указва че test.cpp съдържа програма на C++. 3.) маке Заб.: в този случай предварително трябва да е създаден файл с име Makefile, който съдържа реда:
Титла: C++ и gcc?!?!?! Публикувано от: Nepius в Nov 18, 2004, 16:25 Ето тук има хубаво ръкодство за С/С++ под UNIX за начинаещи. Върши добра работа и под Linux.
Титла: C++ и gcc?!?!?! Публикувано от: BanishMemory в Nov 18, 2004, 17:39 Извинявам се, че ви накарах да ме нахортувате, за дето не пиша в някой Windows-ки форум. Според мен за програмирането няма значение на каква операционна система си и този код, който съм написал е абсолютно елементарен. Освен това останах с впечатлението че Dev-C++ работи със gcc.
Ето какво ми изписва компилатора:
Това е от Dev-C++. 1. #include <stdio.h> Тук stdio.h е името на заглавния файл, който се използва от функциите за вход/изход, а изразът предизвиква включването на този файл във вашата програма. Ключов смисъл е, че директивата #include включва файл. При създаването на С++, както и още няколко години се използваше същия стил на включване като С. Всъщност, Standart С++ все още поддържа С-стила на заглавните файлове, предимно от съображения за обратна съвместимост, но дефинира нов вид хедъри, които можете да използвате вместо тези заглавни файлове. С++ варианта на стандартните С заглавни файлове добавя префикс c към името на файла и изпуска разшитрението .h. Например новият вид С++ хедър за math.h е <cmath>, а за <string.h> е <cstring>. ![]() Всички С++ компилатори поддържат стария стил на включване на заглавни файлове, но той е обявен за отживелица и неговата употреба в нови програми не се препоръчва. Точно затова не се използва в тази книга. ![]() ![]() 2. "using namespace std;" е т.нар. "Именовано пространство". Когато включите нов вид хедър във вашата програма, то неговото съдържание се намира в именованото пространство std. Именовано пространство (namespace) представлява просто декларативна област. Предназначението на именованото прострнство е да ограничи имената на идентификаторите, за да се избегнат колизии между тях. Обикновено имената на библиотечните функции и на други подобни елементи просто се поставяха в глобалното именовано пространство (както е в С). Съдържанието на новия вид хедъри се поставя в именованото пространство std. ... и т.н.... Както се досещаш, преписах това от книгата. ("С++ практически самоучител" от Хърбърт Шилдт). Там пише и за "Работа със стар компилатор" - ... Тоест, само заместете
с
Но от това пък ми изписва следното:
![]() Титла: C++ и gcc?!?!?! Публикувано от: rpetrov в Nov 18, 2004, 18:15 Гледай внимателно:
Флага -L е некоректен, трябва да е -L"C:\Program Files\Dev-Cpp\lib", т.е. или в Dev-C++ нещо не е настроено както трябва или тази среда има проблем с празен(space) символ в имена на файлове и директории. Липсва -I флаг, т.е. къде да търси хедър файловете. Нещо не е конфигурирано в средата - защо компилатора е стартиран само с -L флаг? Може би пак проблем с празно в пътя. Възможни решения: - Преинсталирай развойната среда например в C:\devel. - Друг начин е да се използват кратките имена за директории и файлове. - Ако сложиш(оградиш) в кавички имена с празно в тях, може би да си решиш проблема. Титла: C++ и gcc?!?!?! Публикувано от: plamen_t в Nov 19, 2004, 11:14 Еми то много добре си е написано какъв е проблема:
Компилаторът не може да намери iostream.h откъдето следва че не може и да дефинира cout функцията. Причините са 2. Или файлът iostream.h физически не съществува на РС-то или компилаторът не знае къде се намира. Ето защо най-добре би било първо да провериш дали iostream.h е качен на РС-то ти. Ако е качен може или да укажеш на компилатора къде се намира iostream.h или да дадеш в #include пълния път до iostrem.h ,т.е #include "C:\pytq_do_iostream.h\iostrem.h" макар че това е по-дърварският начин ![]() Само че не питай къде са защото по принцип вече не ползвам Windows( за щастие ![]() Ай дано успееш, а пък да компилираш такива малки програми на Visual C++ си е чиста загуба на място защото за програма дълга около 1 Кб Visual C++ дава изход от няколко Мб ![]() Титла: C++ и gcc?!?!?! Публикувано от: Филип Бонев в Nov 20, 2004, 01:23 Здравей,
Ето как съм компилирал твоя пример и с какво Borland C++ 6.0
Visual Studio .NET:
MinGW Developer Studio(Мисля, че това е като DevCPP - работи с gcc):
Така, като гледам лесно може да се направи да се компилира и на трите компилатора. Трябва само да се ползва някои друг #ifdef, предполагам. Редакция: Dev-C++ 5.0b9:
ПП: Като съм компилирал съм ползвал създавал празен проект в всичките среди за компилиране и след това съм компилира paste-вал кода горе. Хайде успех с четенето. Титла: C++ и gcc?!?!?! Публикувано от: BanishMemory в Nov 22, 2004, 20:03 Страхотно. Благодаря ви много
![]() До колкото разбирам, дори и source кода не е универсален и за всеки различен компилатор се изисква различен стил на писане, даже и от страна на включваните заглавни (хедърни) файлове. ![]() ![]() Това за празният проект обаче ми хареса. Как не се съм се сетил. Още веднъж благодаря на всички, които ми помогнаха, или поне се опитаха. Пожелавам ви да станете най-добрите програмисти на света ![]() Титла: C++ и gcc?!?!?! Публикувано от: rpetrov в Nov 30, 2004, 12:36
Това за Borland C++ 6.0 ми изглежда странно. Това е приложение за Windows. Пробвал ли си да създадеш проект за "конзола", на C++ и без VCL ? Кода от първото съобщение на BanishMemory се компилира без промяна с "Free Borland® C++ Compiler 5.5" публикуван през 2000 г. Едва ли в следващата версия на компилатора да не може да се компилира. Титла: C++ и gcc?!?!?! Публикувано от: Филип Бонев в Dec 03, 2004, 12:41 Така за Builder 6 със сигурност не става има някаква не съвместимост с header-ите.
Титла: C++ и gcc?!?!?! Публикувано от: nocture в Dec 03, 2004, 22:52 Здравейте,
от два дена се занимавам с линукс и останах с доста добри впечатленея. Поразрових се в темата, но не разбрах как точно да си стартирам програма на с. Примерно която тръгва на другите компилатори под Windows. Компилирах си програмата примерно:
Та после как мога да си стартирам програмата? Титла: C++ и gcc?!?!?! Публикувано от: Филип Бонев в Dec 04, 2004, 00:15 Нещо не си гледал както трябва и по форума има още теми иначе ето на бързо:
gcc file.c -o file и после ./file и го пускаш. Титла: C++ и gcc?!?!?! Публикувано от: nocture в Dec 04, 2004, 13:24 Ясно, схванх.
Благодаря Титла: C++ и gcc?!?!?! Публикувано от: nocture в Dec 06, 2004, 12:36 Добре защо когато файлът е .cpp ми дава грещка :
А като е с .c всичко е ОК Титла: C++ и gcc?!?!?! Публикувано от: rpetrov в Dec 06, 2004, 19:29
Когато методите са "C" се генерират едни имена на фунции и съответен код за извикването им. Когато методите са на "C++" се генерират други имена. примери: 1.) extern "C" void test_c(void); 2.) extern "C++" void test_cpp(void); Титла: C++ и gcc?!?!?! Публикувано от: rpetrov в Dec 06, 2004, 19:41 П.П. и затова header файловете съдържат:
ЗА СЪЖАЛЕНИЕ ИНТЕРФЕЙСА НА Ikonboard Е ОГРАНИЧЕН И НЕ ПРИЕМА КОДА НА "C++". Ще трябва сам да го откриеш. Титла: C++ и gcc?!?!?! Публикувано от: plamen_t в Dec 06, 2004, 21:53 gcc -o file file.c (или gcc file.c -o file) е едно и също и ти генерира изпълним файл с име file. Само че gcc e C компилатор, а не C++. За да компилираш програма на С++ използвай компилатора за С++ , а именно g++
![]() T.e програмата се компилира по същият начин като със gcc: g++ -o file file.cpp или g++ file.cpp -o file g++ върви заедно с gcc, така че е почти невъзможно да го нямаш при положение , че имаш gcc ![]() Ай успех ![]() Титла: C++ и gcc?!?!?! Публикувано от: BanishMemory в Dec 16, 2004, 14:36 Абе хора. Изчетох 2 дебели книги за С/С++ и никъде не пишеше да има "методи". Хедърни (заглавни) файлове - да, библиотеки - да, класове - да... но тези метоси от къде ги измъкнахте не разбрах:
![]() Титла: C++ и gcc?!?!?! Публикувано от: rpetrov в Dec 16, 2004, 15:23
s/методи/функции/g ;-) Титла: C++ и gcc?!?!?! Публикувано от: Филип Бонев в Dec 16, 2004, 17:20
Много добре казано ![]() Супер отговор ![]() |