Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Простой вопрос по Си

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
pcstupid



Зарегистрирован: 13.02.2004
Сообщения: 61

СообщениеДобавлено: Ср Мар 02 2005 11:35    Заголовок сообщения: Простой вопрос по Си Ответить с цитатой

Доброго времени суток!

Я мало работаю с Си. И есть простой вопрос. Если я в теле программы
запишу такое:

#define ABC = 123;

То. Есть ли возможность заставить компилятор отработать таким
образом, чтобы на выходе получился текстовый файл, содержащий
расширение макро:

123

Если это не решается средствами компилятора, м.б. кто-то подскажет
другое решение.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
droopy



Зарегистрирован: 28.07.2004
Сообщения: 168

СообщениеДобавлено: Ср Мар 02 2005 12:52    Заголовок сообщения: Ответить с цитатой

кто мешает открыть файл и записать в него значение?
или я что-то не так понял?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
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++ Wink, иначе вряд ли что выйдет.
Спасибо. Просто думал как-то решить такую задачку. Есть текстовый скриптовый язык, который просто тупо повторяет некий протокол сетевого обмена. Скрипт на этом языке очень большой из-за необходимости описывать настройки, входы и выходы модулей, загружаемых в целевую машину, связи между входами/выходами и т.п. Я хотел поиметь псевдо язык, который бы позволил избавиться от почти "ассемблерного" описания. Так, как если на нём всё делать, много работы и ошибок будет.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
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 писал(а):
>ООП ... - правила, которых следует придерживаться при написании программ
Только не программ, а средств разработки программ.
Потому что в чистых сях, в которых нет средств ООП, в программе их придерживаться невозможно в принципе. Smile

Неверно. Всё неверно. Абсолютно всё неверно. Гиперабсолютно всё неверно.
ООП -- это исключительно правила, которые возложены на компилятор. Но это не означает, что если компилятор не поддерживает правила, то их нельзя выполнять. Пример:
если в ООП пишут
Код:
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 писал(а):
>ООП -- это не новый способ программирования
А что у него значит звукосочетание "способ программирования", Дейкстра не поясняет? Smile Как обычно у знаменитых евроклассиков... Sad

У Дейкстры не "способ программирования", а "дисциплина программирования", то есть правила. Программист может выполнять их, тогда ему с некоторой вероятностью будет щасте, а может не выполнять, тогда будет ему и его потребителям геморрой. Или масдай.
Wladimir писал(а):
> Си/Си++ имеет возможность... <и далее>
Вот-вот, причём всё это будет нарастать в геометрической прогрессии по мере добавления новых качеств. Sad

Вот поэтому эти качества перекладываются на компилятор в виде поддержки ООП.
----------------------------
ООП это не щасте программиста, это его желание
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
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
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
критикан



Зарегистрирован: 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 там и т.п.
>Визуальный. Кнопки рисовать.
Да и в фоксе с клиппером можно было.
>И считать это программированием.
Да, ты прав как всегда. Sad

Во-во! Программирование и написание кода -- это разные вещи.
----------------------
Программирование и написание кода -- это разные вещи.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
критикан



Зарегистрирован: 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-ом, купленном на бабушкину пенсию. ЛоЛ.

Клоунствуй дальше, Smile))))))))))))
_________________
love IT
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
критикан



Зарегистрирован: 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    Заголовок сообщения: Они академиев не кончали Ответить с цитатой

Откуда весь этот мастдайный идиотизм? Что за банда зэков, видящих мир только через зарешёченную форточку мастдая, оккупировала все форумы? За что это воинствующее дилетантство сдалось на шею беззащитных потребителей? Самое неприятное то, что эти наглые, тупорылые дилетанты поучают, как жить, и требуют, чтобы их идиотские поделки оплачивали неслабой денежкой, а их отсталые мыслишки почитали за истину в последней инстанции. Уткнитесь и сдохните со своими виндами.
---------------------------------
Они академиев не кончали
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...