Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > C в Linux'e


Автор: LAGOX 15.2.2010, 14:26
Всем привет! В университете начали изучать C(не C++), а там пишем на Turbo C smile , пробовал такие же программы писать как в универе под линуксом(Ubuntu, Netbeans) выходят ошибки, сейчас точно не вспомню какие. Как можно организовать, чтобы программы написанные в универе работали и тут в линуксе, ну и наоборот соответственно тоже. 

Автор: SenkraD 15.2.2010, 14:50
Приведи код, так как есть подозренние на исползование функций с "родных" библиотек Turbo-C

Автор: bilbobagginz 15.2.2010, 15:14
LAGOX, если настроить борланд турбо си компайлер компилировать ANSI стандартированный код, 
и тоже самое сделать в линуксе, то все будет работать.

к сожалению нередко в универах не обучают "чистому диалекту C":
используют всякие непереносимые библиотеки, напр. те,  которые реализуют функционал conio.h и/или graphics.h в ТурбоСи.
причем без надобности:
во-первых - нет никакой в них дидактической нужды.
во-вторых они будут работать только со старыми ДОС средами.

решить эту проблему будет сложно, с организационной т.з.: домашки проверяют по какому-то стандарту.

если тебе позволяют пользоваться компилятором gcc, то им можно пользоваться и под виндовс и под линукс.

Автор: LAGOX 15.2.2010, 16:27
Видимо Вы правы, т.к. мы всегда подключаем эти библиотеки:
stdio.h, conio.h и с недавнего времени alloc.h (вроде так) . И как быть, юзать gcc на линуксе , а в универе как быть? Там нет прав администратора, чтобы поставить gcc

Автор: andrew_121 15.2.2010, 16:32
Цитата(LAGOX @  15.2.2010,  16:27 Найти цитируемый пост)
stdio.h

это стандартный хидер. присутствует везде.

Цитата(LAGOX @  15.2.2010,  16:27 Найти цитируемый пост)
alloc.h

есть alloca.h

Цитата(LAGOX @  15.2.2010,  16:27 Найти цитируемый пост)
И как быть, юзать gcc на линуксе , а в универе как быть?

установить Mingw32

Автор: kuzulis 15.2.2010, 16:37
Цитата

установить Mingw32 

Только потом чтобы показать преподу Ваш EXE-шник (т.е. чтобы он заработал) - нужно будет в папку с екзешником скопировать dll-ку из Mingw : mingwm10.dll

Автор: LAGOX 15.2.2010, 16:38
Спасибо за ответы!

Автор: andrew_121 15.2.2010, 18:49
Цитата(kuzulis @ 15.2.2010,  16:37)
Цитата

установить Mingw32 

Только потом чтобы показать преподу Ваш EXE-шник (т.е. чтобы он заработал) - нужно будет в папку с екзешником скопировать dll-ку из Mingw : mingwm10.dll

неправда.
достаточно компилировать с флагом "--static-libgcc"

Автор: bilbobagginz 15.2.2010, 21:14
LAGOX
в принципе нет ничего, что дает сделать conio.h, чего нелься сделать в линуксе.
но это ненужный геморрой.

подойди и посоветуйся с инструкторами курса, если они согласятся принимать и проверять твои работы на gcc - дело в шляпе.
если нет - работай на том инструменте, который тебе предложили. запустить turbo C можно через xdos, dosemu и др. эмуляторы DOS.

Автор: MAKCim 15.2.2010, 23:43
используйте #ifdef'ы и будет вам счатье ;)

Автор: bilbobagginz 16.2.2010, 11:00
Цитата(MAKCim @  15.2.2010,  22:43 Найти цитируемый пост)
используйте #ifdef'ы и будет вам счатье ;) 

наверное это будет overkill на курсе, когда задачки с трудом превышают 200-300 строк...

Автор: MAKCim 16.2.2010, 14:17
Цитата(bilbobagginz @  16.2.2010,  11:00 Найти цитируемый пост)
аверное это будет overkill на курсе, когда задачки с трудом превышают 200-300 строк...

а не важно сколько строк
лучше сразу делать правильно
обеспечение мультиплатформенности на уровне исходного кода делается через макросы

Автор: bilbobagginz 16.2.2010, 15:28
Цитата(MAKCim @  16.2.2010,  13:17 Найти цитируемый пост)
обеспечение мультиплатформенности на уровне исходного кода делается через макросы 

не спорю.
но насколько важно фокусироваться на многоплатформенности при изучении азов языка ?
наверное лучше научиться рулить языком с одной платформой, а потом уже и размножаться... 

Автор: MAKCim 16.2.2010, 15:55
bilbobagginz
Цитата(LAGOX @  15.2.2010,  14:26 Найти цитируемый пост)
Как можно организовать, чтобы программы написанные в универе работали и тут в линуксе, ну и наоборот соответственно тоже.  



Автор: slater 16.2.2010, 16:31
извиняюсь, что встреваю, а как через макросы? вот, например

Код

#ifdef LINUX

ТЫРЫ-ПЫРЫ

Код

#ifdef FREEBSD

ТЫРЫ-ПЫРЫ

Код

#ifdef WINDOWS

ТЫРЫ-ПЫРЫ

а как получить или установить эти переменные програмно, что бы во время компиляции это все определить???

Автор: MAKCim 16.2.2010, 17:15
slater
любой компилятор сам себя идентифицирует, для gcc это __GNUC__
для турбо С сам поищи

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)