Предложение и вопрос.

GMX

schizophrenic
#1
ТОВАРИЩИ! Предлагаю создат раздел "программинг", где ламеры вроде меня могли бы обратиться с вопросами к отцам.
А пока у мя вопрос.

Короче, народ, такая вот ерунда...
Мне нуна создать raw-socket
У меня стоит линух.
в файле <netinet/ip.h>, такой фрагмент:

struct iphdr
{
................
и идут тут линуховские struct'ы
................

далее:
#ifdef __USE_BSD
struct ip
{.....траляля
идут structы БСДешные

Мне нужны БСДешные struct'ы. В своей проге пишу
#define __USE_BSD
Все пашет.

Далее в файле <netinet/tcp.h> почти такая же фигня:
# ifdef __FAVOR_BSD
struct tcphdr
{.........
идут БСДешные struct'ы
.........
через неск строчек:
# else /* !__FAVOR_BSD */
struct tcphdr
{...........
идут struct'ы пингвинячьи
............

Так вот с ТСР косяк: в своей проге пишу
#define __FAVOR_BSD
но эта шняга не компилится и все равно использует пингвинячьи tcp-struct'ы, а мне нужны БСДешные.

Товарищи кодеры/хакеры/программеры/отцы/крутые_парни, в чем дело?
Только не надо называть меня тупым ламером и указывать на мои кривые пальцы-об этом я и так знаю...
 

xood

Гость города
#3
Интересно

# else /* !__FAVOR_BSD */ - по моему это не сработает, по кайней мере у меня когда то не срабатывало, попробуй по другому расположить свои определения структур. Сделай как в первом примере, только так:

#ifndef __FAVOR_BSD
struct tcphdr
{.........
идут struct'ы пингвинячьи
.........
через неск строчек:
#endif
#ifdef __FAVOR_BSD
struct tcphdr
{...........
идут БСДешные struct'ы
............
#endif

по моему должно заработать, дело в том что если ты ставил #ifdef где то раньше в коде, то #else может относится и к ним, и вообще ИМХО эта инструкция немного глючная, лучше самому поставить #ifndef условие вместо #else... :)
 

GMX

schizophrenic
#5
РАБОТАЕТ!!
Интересно, чем думали разработчики, когда включали такой код в библиотеку?
 

xood

Гость города
#6
Вот о чем думали разработчики :)

Уважаемые коллеги !

Из всемирно известного информационного агенства VOGON News Service
поступило сообщение, которое навсегда меняет лицо и сущность современно-
го программирования. Из-за тайного соглашения между IBM, Microsoft и не-
названных высокопоставленных лиц из VOGON News Service (недавно вы-
шедших в отставку из за конфликтов в президентом фирмы), данная новость
стала известна миру только 8 дней назад. Сейчас уже всем очевидно, что в
споре между сторонниками Паскаля и Си. Как признали создатели ОС UNIX
разработка была задумана как первоапрельская шутка, которая, к сожалению
была неверно истолкована. Впрочем предоставим слово самим создателям OC
UNIX. Перевод был выполнен Дмитрием Кохманюком, которому составитель вы-
ражает искреннюю благодарность.

Создатели Cи и UNIX признают, что разыграли весь мир

В заявлении, потрясшем весь компьютерный мир, Кен Томпсон, Деннис
Ричи и Брайан Керниган признали, что операционная система UNIX и язык
программирования Си, созданные ими -- тщательно спланированный перво-
апрельский розыгрыш, "продержавшийся" более 20 лет. Выступая на послед-
нем Конгрессе разработчиков программного обеспечения для ОС ДЕМОС
(UnixWorld Software Development Forum), Томпсон признал следующее:

"В 1969 году AT&T завершила работу над проектом операционной системы
Multics (известная операционная система 60-х, см. прим.2) Брайан и я то-
лько что начали работу с ранней реализаций Паскаля, разработанной в ла-
боратории проф. Вирта в Швейцарии, и находились под впечатлением элеган-
тности, простоты и мощи этого языка. Деннис как раз прочитал "Уставший
от колец", веселую сатиру на знаменитую трилогию Толкина "Властелин ко-
лец" (*1*). Ради шутки мы решили написать пародии на среду Multics и Па-
скаль. Деннис и я отвечали за операционную среду. Глядя на Multics, мы
спроектировали новую систему настолько сложной и запутанной, чтобы мак-
симально "испортить жизнь" рядовым пользователям, назвали ее UNIX как
пародию на Multics, добавив много других достаточно рискованных анало-
гий.

Затем Деннис и Брайан разработали по-настоящему извращенный диалект
Паскаля, назвав его "A". Когда мы обнаружили, что другие действительно
пытаются писать программы на A, мы быстро добавили еще парочку хитрых
примочек, создав B, BCPL, и, наконец, Си. Мы остановились, добившись ус-
пешной компиляции следующего:

for(;P("n"),R-;P("|"))for(e=C;e-;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);

Мы не могли даже представить, что современные программисты будут пы-
таться использовать язык, допускающий подобный оператор! Мы даже собира-
лись продать все это Советам, чтобы отбросить развитие их компьютерного
дела на 20 лет назад (*2*). Представьте наше удивление, когда AT&T, а
также другие американские корпорации начали пытаться использовать UNIX и
Си! Более 20 лет ушло на то, чтобы приобрести достаточный опыт для со-
здания хоть немного полезных приложений с использованием этой технологи-
ческой пародии 60-х. Мы были поражены упорством и целеустремленностью
(если не чувством здравого смысла) типичного программиста, использующего
UNIX и/или Си. В любом случае, Брайан, Деннис и я в течение последних
лет работали исключительно на Паскале в среде Apple Macintosh и чувствуем
себя по-настоящему виноватыми в том хаосе, путанице и действительно
скверном программировании, причиной которых явилась наша неудачная шутка
столько лет тому назад."

Большинство поставщиков версий UNIX и Си, включая AT&T, Microsoft,
Hewlett-Packard, GTE, NCR, DEC, отказались комментировать это выступле-
ние. Borland International, ведущий производитель инструментальных
средств для Паскаля и Си, включая популярные Турбо Паскаль, Турбо Си и
Турбо Си++, заявил, что они давно подозревали это и будут продолжать
улучшать свои разработки для Паскаля и прекратят дальнейшие усилия по
развитию Си. Официальный представитель IBM разразился безудержным хохо-
том и был вынужден отменить спешно собранную конференцию о судьбе RS-
6000 заявив, что 'VM появится в ближайшее время'. В непонятом аудиторией
кратком сообщении проф. Вирт, отец Паскаля, Модулы-2 и Оберона, сказал
лишь, что некто P.T. Barnum был прав.

Кстати, из обычно совершенно надежных источников стало известно, что
подобное признание возможно скоро последуют от Вильяма Гейтса относи-
тельно MS-DOS и Windows. Неслучайно, вышеупомянутый представитель IBM
уже начал отрицать, что Виртуальная Машина (VM) является созданной для
внутреннего употребления аналогичной шуткой, вырвавшейся наружу.


Примечания переводчика

(*1*)
Книга Толкина -- известного автора, жившего до эры компьютеров, до сих
пор является настольной руководством для создателей операционных систем.
В заметке, видимо, имеется в виду упрощенная версия, созданная специально
для разработчиков операционных систем персональных компьютеров.

(*2*)
Вот было бы здорово -- у нас были бы авторские права на UNIX!!!
Но, возможно, тогда он разделил бы судьбу OS/360 (после адаптации НИИЦЭВТ)?
 

xood

Гость города
#8
Конечно староват :), я так выложил, вдруг кто не читал ;). А вообще Си - это хорошо...
 

GMX

schizophrenic
#9
Конечно хорошо! Си рулит! Правда, ассемблер рулит еще больше, но пока это не по моим мозгам.
 

root

Администратор
Команда форума
#10
Насчёт что рулит

имхо, нельзя говорит какой язык рулит а какой сакс....
каждый язык направлен на решение определённых задач...сказать что ассемблер рулит это не так, вот связь си+ассемблер это мощь ... но опять же смотря какая задача стоит :)
 

JouS

Житель города
#11
Хм....ну вы меня загрузили... =))
Я вот нихрена не понимаю кроме Дельфей чуть-чуть и рад! И не напрягаюсь... :] Ну вы молодцы, конечно, но это не мне...я готовое юзаю и доволен... :rolleyes:) и всем рекомендую!!! :) :) ;)
ЗЫ. хотя конечно, если б была возможность с удовольствием поучился бы тож.... 8)
 

skif

Житель центра
#12
to root

Поддерживаю.
============
Выбирать язык необходимо изходя из поставленной задачи.
Например, куда вырулит таже связка си-асм, если нужно написать скрипт для веб-страницы?... Вот-вот.
Для решения каждой задачи есть набор языков, нужно только выбрать лучший.
 

skif

Житель центра
#13
Вань, а тебе не кажется, что постоянно сидеть на всем готовом - глупо. Кричать "Я хочу учится" и не прилагать к этому ни малейших сил... Даже не хочу комментировать.
 
G

Guest

Guest
#14
(Вань, а тебе не кажется, что постоянно сидеть на всем готовом - глупо.) А сам сидишшш и пользуешся готовым или книгу вумную прочитал и кусочек вырвал :baby: . а вообще если есть готовое и хорошо работающее то зачем изобретать двухколесный?
(Кричать "Я хочу учится" и не прилагать к этому ни малейших сил... Даже не хочу комментировать. )Учение это свет..учитель это в переводе "ведущик к знанию" чтоб научится надо не только самому кавыряться но и удругих спрашивать...когда ты хорошо научишся применять чужие знания то дерзай сам..... :) ;)
 

skif

Житель центра
#15
Не согласен

(Вань, а тебе не кажется, что постоянно сидеть на всем готовом - глупо.) А сам сидишшш и пользуешся готовым или книгу вумную прочитал и кусочек вырвал . а вообще если есть готовое и хорошо работающее то зачем изобретать двухколесный?
(Кричать "Я хочу учится" и не прилагать к этому ни малейших сил... Даже не хочу комментировать. )Учение это свет..учитель это в переводе "ведущик к знанию" чтоб научится надо не только самому кавыряться но и удругих спрашивать...когда ты хорошо научишся применять чужие знания то дерзай сам.....
Ты не прав!
Да я использую готовые программы, но я развиваюсь сам. А тупо ждать пока напишут нужную утилиту, настоят что-нибудь, дадут что-то готовое... это путь к загниванию.
Знаешь, проводили опыты с крысой, ей дали кнопку, которая стимулировала участок мозга отвечающий за наслаждение. Крысы умирали от жажду, потому что не могли оторватся. Это мне очень напоминает то о чем писал выше. Суть этих явлений тождественна.
А к чему вторая часть сообщения? По-моему, к теме она имеет косвенное отношение.
 

ExSeaMan

Житель окраин
#16
Опять!

Ну вот! Умудрились, в конце-концов испохабить еще одну тему, превратив ее в свалку типа RULEZ-SUXX :).
Неужели без этого нельзя? Правы root и skif, что язык и средства нужно выбирать под конкретную задачу. Да и кому и что нравится - дело вкуса, лишь-бы колбаса на выходе была ;)