Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
pcstupid
Зарегистрирован: 13.02.2004 Сообщения: 61
|
Добавлено: Ср Мар 02 2005 11:35 Заголовок сообщения: Простой вопрос по Си |
|
|
Доброго времени суток!
Я мало работаю с Си. И есть простой вопрос. Если я в теле программы
запишу такое:
#define ABC = 123;
То. Есть ли возможность заставить компилятор отработать таким
образом, чтобы на выходе получился текстовый файл, содержащий
расширение макро:
123
Если это не решается средствами компилятора, м.б. кто-то подскажет
другое решение. |
|
Вернуться к началу |
|
|
droopy
Зарегистрирован: 28.07.2004 Сообщения: 168
|
Добавлено: Ср Мар 02 2005 12:52 Заголовок сообщения: |
|
|
кто мешает открыть файл и записать в него значение?
или я что-то не так понял? |
|
Вернуться к началу |
|
|
pcstupid
Зарегистрирован: 13.02.2004 Сообщения: 61
|
Добавлено: Ср Мар 02 2005 13:08 Заголовок сообщения: |
|
|
droopy писал(а): | кто мешает открыть файл и записать в него значение?
или я что-то не так понял? |
Просто хотелось бы получить что-то вроде псевдо-языка. Впереди задаются макросы (с аргументами). После идёт просто ссылка на эти макросы. И, я думал, если пропустить такой файл через 1-й этап сомпилятора, можно получить расширения макро. |
|
Вернуться к началу |
|
|
Wladimir
Зарегистрирован: 02.03.2005 Сообщения: 150 Откуда: Ставропольский край
|
Добавлено: Ср Мар 02 2005 13:52 Заголовок сообщения: |
|
|
В #define не нужно "=".
В простейшем виде, видимо имелось в виду что-то типа:
FILE * hFile = fopen("myfile", "rt");
fprintf(hFile, "%i", ABC);
fclose(hFile);
Но ты замаешься дублировать своими определениями
режимы открытия файлов, форматные строки,
списки аргументов переменной длины и эскейп-последовательности.
Лучше использовать C++ - io-классы типа cout:
cout << ABC; // :)))
но там свои заморочки. Макросами, имхо, много не сделаешь.
> Я мало работаю с Си
Тем более. :(
Лучше - сразу на C++ ;), иначе вряд ли что выйдет. |
|
Вернуться к началу |
|
|
pcstupid
Зарегистрирован: 13.02.2004 Сообщения: 61
|
Добавлено: Ср Мар 02 2005 14:07 Заголовок сообщения: |
|
|
>Лучше - сразу на C++ , иначе вряд ли что выйдет.
Спасибо. Просто думал как-то решить такую задачку. Есть текстовый скриптовый язык, который просто тупо повторяет некий протокол сетевого обмена. Скрипт на этом языке очень большой из-за необходимости описывать настройки, входы и выходы модулей, загружаемых в целевую машину, связи между входами/выходами и т.п. Я хотел поиметь псевдо язык, который бы позволил избавиться от почти "ассемблерного" описания. Так, как если на нём всё делать, много работы и ошибок будет. |
|
Вернуться к началу |
|
|
Wladimir
Зарегистрирован: 02.03.2005 Сообщения: 150 Откуда: Ставропольский край
|
Добавлено: Ср Мар 02 2005 14:13 Заголовок сообщения: |
|
|
Имхо, полноценно это можно только инкапсулировав
в свои классы. Но внутренности классов всё равно
придётся описать вручную. :( Экономия будет только при
их многократном использовании.
В любом случае, на C++ выйдет экономнее, чем на C:
хотя бы за счёт разграничения кусков задачи по классам. |
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Чт Мар 03 2005 10:46 Заголовок сообщения: к слову |
|
|
Цитата: | полноценно это можно только инкапсулировав
в свои классы. Но внутренности классов всё равно
придётся описать вручную |
...откуда ещё раз следует вывод, что ООП -- это не новый способ программирования, а именно "парадигма", говоря по-русски, правила, которых следует придерживаться при написании программ. "Дисциплина программирования" (c) Dijkstra
По поводу корневого вопроса: Си/Си++ имеет возможность создать собственный язык программирования за счёт определений, но у этого макроязыка будет ограничение -- нужно будет крайне аккуратно писать сами определения, так как при обращении к ним как к функциям возможны (и весьма вероятны) разные забавные эффекты, которые делают программу некомпилируемой/неработоспособной/неотлаживаемой/нечитаемой. |
|
Вернуться к началу |
|
|
Wladimir
Зарегистрирован: 02.03.2005 Сообщения: 150 Откуда: Ставропольский край
|
Добавлено: Чт Мар 03 2005 11:21 Заголовок сообщения: |
|
|
> ...говоря по-русски... (c) Dijkstra
Йа-йа, дас ист круто! :))
>ООП ... - правила, которых следует придерживаться при написании программ
Только не программ, а средств разработки программ.
Потому что в чистых сях, в которых нет средств ООП, в программе их придерживаться невозможно в принципе. :)
>ООП -- это не новый способ программирования
А что у него значит звукосочетание "способ программирования", Дейкстра не поясняет? :) Как обычно у знаменитых евроклассиков... :(
> Си/Си++ имеет возможность... <и далее>
Вот-вот, причём всё это будет нарастать в геометрической прогрессии по мере добавления новых качеств. :( |
|
Вернуться к началу |
|
|
NewFork
Зарегистрирован: 28.02.2005 Сообщения: 73
|
Добавлено: Чт Мар 03 2005 14:26 Заголовок сообщения: Re: Простой вопрос по Си |
|
|
pcstupid писал(а): | Доброго времени суток!
Я мало работаю с Си. И есть простой вопрос. Если я в теле программы
запишу такое:
#define ABC = 123;
То. Есть ли возможность заставить компилятор отработать таким
образом, чтобы на выходе получился текстовый файл, содержащий
расширение макро:
123
Если это не решается средствами компилятора, м.б. кто-то подскажет
другое решение. |
посмотри в стандартных макросах помоему что-то подобное описывалось в книге "Просто и ясно о Borland C++" автор кажется Бруно Бабэ |
|
Вернуться к началу |
|
|
GREA
Зарегистрирован: 14.05.2003 Сообщения: 758 Откуда: Новосибирск
|
Добавлено: Чт Мар 03 2005 15:27 Заголовок сообщения: |
|
|
Может человек нужно было
#define ABC 123
char name[20]="myfile.";
char buffer[20];
itoa(ABC,buffer,10);
strcat(name,buffer);
FILE * hFile = fopen(buffer, "rt");
Давайте изначально правильно задавать вопросы. |
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Пт Мар 04 2005 09:11 Заголовок сообщения: ООП это не щасте программиста, это его желание |
|
|
Wladimir писал(а): | >ООП ... - правила, которых следует придерживаться при написании программ
Только не программ, а средств разработки программ.
Потому что в чистых сях, в которых нет средств ООП, в программе их придерживаться невозможно в принципе. |
Неверно. Всё неверно. Абсолютно всё неверно. Гиперабсолютно всё неверно.
ООП -- это исключительно правила, которые возложены на компилятор. Но это не означает, что если компилятор не поддерживает правила, то их нельзя выполнять. Пример:
если в ООП пишут
Код: | class ABC {
int A() {}
void B() {}
char C;
};
ABC x, y, z; |
то это не означает, что пишущий на Си не способен написать
Код: | struct ABC {};
int ABC_A(ABC*) {}
void ABC_B(ABC*) {}
char ABC_Cx, ABC_Cy, ABC_Cz; |
а затем дать себе зарок при манипуляциях с переменными типа ABC не пользоваться никакими другими функциями кроме ABC_A(), ABC_B() и переменными ABC_Cx, ABC_Cy, ABC_Cz, связанными с ними, и добросовестно его исполнять. А это и будет означать, что такой программист будет придерживаться концепции/парадигмы ООП. "Средства разработки" тут ни при чём.
Wladimir писал(а): | >ООП -- это не новый способ программирования
А что у него значит звукосочетание "способ программирования", Дейкстра не поясняет? Как обычно у знаменитых евроклассиков... |
У Дейкстры не "способ программирования", а "дисциплина программирования", то есть правила. Программист может выполнять их, тогда ему с некоторой вероятностью будет щасте, а может не выполнять, тогда будет ему и его потребителям геморрой. Или масдай.
Wladimir писал(а): | > Си/Си++ имеет возможность... <и далее>
Вот-вот, причём всё это будет нарастать в геометрической прогрессии по мере добавления новых качеств. |
Вот поэтому эти качества перекладываются на компилятор в виде поддержки ООП.
----------------------------
ООП это не щасте программиста, это его желание |
|
Вернуться к началу |
|
|
pcstupid
Зарегистрирован: 13.02.2004 Сообщения: 61
|
Добавлено: Пт Мар 04 2005 10:57 Заголовок сообщения: |
|
|
GREA писал(а): | #define ABC 123
Давайте изначально правильно задавать вопросы. |
Да, я же говорил, что начинающий и с синтаксисом путаюсь. Нужно, чтобы компилятор создал на выходе не exe-файл, а текстовый, кот. содержит расширение макро, а именно строку:
123
Вообще-то мне руковод уже зарубил идею, сказав, что это чушь. Хотя ничего и не предложил. Думаю, самым правильным решением - взять Аду, и написать нормальную программу, которая работает по протоколу, а не использовать промежуточные дебильные доморощенные "скрипты". |
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Пт Мар 04 2005 11:40 Заголовок сообщения: Источник информации -- документация |
|
|
pcstupid писал(а): | Да, я же говорил, что начинающий и с синтаксисом путаюсь. Нужно, чтобы компилятор создал на выходе не exe-файл, а текстовый, кот. содержит расширение макро, а именно строку:
123 |
По этому поводу все компиляторы имеют опцию, называемую примерно так: "генерировать листинг без макрорасширений"
------------------
Источник информации -- документация |
|
Вернуться к началу |
|
|
Wladimir
Зарегистрирован: 02.03.2005 Сообщения: 150 Откуда: Ставропольский край
|
Добавлено: Пн Мар 07 2005 10:34 Заголовок сообщения: |
|
|
2 Критикан
>Неверно. Всё неверно. Абсолютно всё неверно. Гиперабсолютно всё неверно.
Сколько экспрессии... Я б так не смог. :(
>то это не означает, что пишущий на Си не способен написать (и т.д.)
А ещё можно сразу для программы свой компилятор забацать, почему бы и нет? В конечном итоге, любой язык программирования можно считать макроассемблером.
Кажется, речь идёт о практической стороне вопроса, а не о схоластике.
>а затем дать себе зарок
Программист должен программы писать, а зароки пусть монахи дают.
2 pcstupid
>Думаю, самым правильным решением - взять Аду, и написать нормальную программу
В рамках одной программы, оно может и лучше - смотря по задаче.
И для каждой новой задачи новый язык учить? |
|
Вернуться к началу |
|
|
DmitryShm
Зарегистрирован: 17.11.2003 Сообщения: 211 Откуда: Казань
|
Добавлено: Вт Мар 08 2005 10:46 Заголовок сообщения: Хорошо.. |
|
|
Полностью согласен с Wladimir. Обычно заявление, подобные критикановским делают лишь новички. Но это и не плохо, ведь потом критикан поймет это, а эта беседа станет для него полезной. _________________ love IT |
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Ср Мар 09 2005 09:44 Заголовок сообщения: Дилетантов -- на бейсик! |
|
|
Похоже, что г-да DmitryShm и Wladimir не понимают, что программировать с ОО-стиле можно и на ассемблере. Типичные проблема и зазнайство новоявленных программистов, которые учились программировать на хелпах от микрософта. Остаётся порекомендовать им бейсик. Визуальный. Кнопки рисовать. И считать это программированием.
-----------------------
Дилетантов -- на бейсик! |
|
Вернуться к началу |
|
|
Wladimir
Зарегистрирован: 02.03.2005 Сообщения: 150 Откуда: Ставропольский край
|
Добавлено: Ср Мар 09 2005 21:37 Заголовок сообщения: |
|
|
>что программировать с ОО-стиле
ООП и ООП-стиль - это как шашлык и запах от шашлыка.
Видимо, не каждый видит разницу.
>проблема и зазнайство новоявленных программистов
Не совсем новоявленных. С 1986 эпизодически. С 1993 регулярно. С 1998 - на производстве.
>которые учились программировать на хелпах от микрософта
От Борланда, если быть точным. По книжкам типа "От Си к C++" и др.
Но точно - не по философским талмудам Дейкстры и Вирта.
>Остаётся порекомендовать им бейсик
Это было году в 1984-м: Д3-28 там и т.п.
>Визуальный. Кнопки рисовать.
Да и в фоксе с клиппером можно было.
>И считать это программированием.
Да, ты прав как всегда. :( |
|
Вернуться к началу |
|
|
Wladimir
Зарегистрирован: 02.03.2005 Сообщения: 150 Откуда: Ставропольский край
|
Добавлено: Ср Мар 09 2005 21:46 Заголовок сообщения: |
|
|
> Остаётся порекомендовать им бейсик. Визуальный. Кнопки рисовать. И считать это программированием.
Кстати, VB тоже использую - там где он необходим.
Из фразы делаю вывод: с экпортом отчёто в MSОфис Критикану работать не доводилось. Или он это делал через assемблер. |
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Чт Мар 10 2005 09:52 Заголовок сообщения: Программирование и написание кода -- это разные вещи |
|
|
Wladimir писал(а): | ООП и ООП-стиль - это как шашлык и запах от шашлыка.
Видимо, не каждый видит разницу. |
Вот почему винда маст дай, а программисты под винду вечно будут делать игрушечные поделки. В действительности ООП и ООП-стиль - это как умение готовить пищу на микроволновке и на чём угодно.
Wladimir писал(а): | >проблема и зазнайство новоявленных программистов
Не совсем новоявленных. С 1986 эпизодически. С 1993 регулярно. С 1998 - на производстве. |
Хо-хо! Некоторые научились как они считают "программировать" вообще в 70-х, но до сих пор остались новоявленными. А производство -- это вообще не аргумент: мне приходилось править идиотские программы таких "производственников". Без исходных текстов, между прочим.
Wladimir писал(а): | >которые учились программировать на хелпах от микрософта
От Борланда, если быть точным. По книжкам типа "От Си к C++" и др.
Но точно - не по философским талмудам Дейкстры и Вирта. |
Во-во! Программирование и написание кода -- это разные вещи.
Wladimir писал(а): | >Остаётся порекомендовать им бейсик
Это было году в 1984-м: Д3-28 там и т.п.
>Визуальный. Кнопки рисовать.
Да и в фоксе с клиппером можно было.
>И считать это программированием.
Да, ты прав как всегда. |
Во-во! Программирование и написание кода -- это разные вещи.
----------------------
Программирование и написание кода -- это разные вещи. |
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Чт Мар 10 2005 10:20 Заголовок сообщения: Ремесленник создаёт поделки, а не шедевры |
|
|
Wladimir писал(а): | > Остаётся порекомендовать им бейсик. Визуальный. Кнопки рисовать. И считать это программированием.
Кстати, VB тоже использую - там где он необходим.
Из фразы делаю вывод: с экпортом отчётов в MSОфис Критикану работать не доводилось. Или он это делал через assемблер. |
Да приходилось, приходилось. Но экспорт в мсофис -- это чистой воды дуриловка конечного потребителя: я уж не говорю о том, что для конечного потребителя выгодней не экспорт в мсофис, а (по убыванию выгоды)
--распечатка готового документа (чтобы дополнительно вообще ничего не делать)
--экспорт в универсальный формат (чтобы поправить/распечатать имеющимися, а не специально приобретёнными средствами)
--использование ole/com-технологии с мсофисом в качестве сервера или клиента (чтобы не преключаться в другую исполняемую среду)
А экспорт в формат мсофиса -- это худший вариант обмена информации между программами. Впрочем, от приверженцев мастдая ожидать чего-то путного не приходится.
---------------------
Ремесленник создаёт поделки, а не шедевры |
|
Вернуться к началу |
|
|
DmitryShm
Зарегистрирован: 17.11.2003 Сообщения: 211 Откуда: Казань
|
Добавлено: Чт Мар 10 2005 12:50 Заголовок сообщения: критикан смешен |
|
|
Критикан смешен, у него ЛоЛовская характерная агрессвность. Этот Лол БУДЕТ программировать на Асме в "объектно-ориентированном" стиле. Не будем ему мешать. ЛоЛ -- это пока еще не диагноз.
Про офис от Майкрософта: критикан НЕ знает его устройство, я уверен. До сих пор, наверное юзает гребаную Win 3.1 (бета версию) на 386-ом, купленном на бабушкину пенсию. ЛоЛ.
Клоунствуй дальше, )))))))))))) _________________ love IT |
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Чт Мар 10 2005 17:08 Заголовок сообщения: Если клоун говорит правду в смешном виде, правда не виновата |
|
|
Откуда такая агрессивная злоба, братья мои возлюбленные? Если для некоторых любителей мсофис -- это предел их программизма, я не взыщу. Падите ниц пред мелкими да мягкими, воздайте хвалу Биллу и отстегните букисов поболе. А знания мои не поминайте всуе: негоже неучам, пишущим "смешон" через "е", чужие знания хаять. Сначала на комманд.коме научитесь писать то, для чего вам ни сей, ни осей со всеми плюсами не хватит.
--------------------------------------
Если клоун говорит правду в смешном виде, правда не виновата |
|
Вернуться к началу |
|
|
Wladimir
Зарегистрирован: 02.03.2005 Сообщения: 150 Откуда: Ставропольский край
|
Добавлено: Чт Мар 10 2005 20:51 Заголовок сообщения: |
|
|
2 DmitryShm
Полностью согласен.
2 Критикан
Мой юный и пылкий друг. Если Вам хочется пофлудить, открывайте новую тему. Т.к. разговор давно не имеет отношения к заданному вопросу.
Твои же слова о винде и всём с ней связанной - слова не мудрого мужа, которым ты хочешь выглядеть, но молокососа, просмотревшего пару книжек "*nix для чяйникофф". Если бы ты работал программистом, ты бы не нёс подобную херню.
На будущие посты в этой теме отвечать не буду. |
|
Вернуться к началу |
|
|
критикан
Зарегистрирован: 18.02.2005 Сообщения: 247
|
Добавлено: Пн Мар 14 2005 09:53 Заголовок сообщения: Они академиев не кончали |
|
|
Откуда весь этот мастдайный идиотизм? Что за банда зэков, видящих мир только через зарешёченную форточку мастдая, оккупировала все форумы? За что это воинствующее дилетантство сдалось на шею беззащитных потребителей? Самое неприятное то, что эти наглые, тупорылые дилетанты поучают, как жить, и требуют, чтобы их идиотские поделки оплачивали неслабой денежкой, а их отсталые мыслишки почитали за истину в последней инстанции. Уткнитесь и сдохните со своими виндами.
---------------------------------
Они академиев не кончали |
|
Вернуться к началу |
|
|
|