|
Титла: 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
Много добре казано Супер отговор |