WTF operator
От: Ytz https://github.com/mtrempoltsev
Дата: 14.08.10 10:02
Оценка: 4 (1)
Наткнулся на Stack Overflow на забавный оператор:

(foo() != ERROR)??!??! cerr << "Error occurred" << endl;


триграфы
Re: WTF operator
От: Кодт Россия  
Дата: 14.08.10 11:05
Оценка: +7
Здравствуйте, Ytz, Вы писали:

Ytz>
Ytz>(foo() != ERROR)??!??! cerr << "Error occurred" << endl; 
Ytz>


Интересно, кому-нибудь эти чёртовы триграфы где-нибудь пригодились? Мы же не на турэцкой пэчатающэй машинкэ Остапа Бэндэра пишем...
Перекуём баги на фичи!
Re: WTF operator
От: Erop Россия  
Дата: 14.08.10 11:47
Оценка: :))
Здравствуйте, Ytz, Вы писали:

Ytz>
Ytz>(foo() != ERROR)??!??! cerr << "Error occurred" << endl; 
Ytz>


Знать перлисты какие-то писали
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: WTF operator
От: Lorenzo_LAMAS  
Дата: 14.08.10 11:49
Оценка: :))
К>Интересно, кому-нибудь эти чёртовы триграфы где-нибудь пригодились? Мы же не на турэцкой пэчатающэй машинкэ Остапа Бэндэра пишем...

блин, то-то и оно, что кому-то пригодилось — собирал некую библиотеку математическую на С, там какого-то рожна кретины авторы впаяли триграфов, причем часть пунктуаторов была обычными, а часть _таких_ _же_ заменена триграфами. компилятор, обложил меня матами (так как их славный мэйк _не_ _имел_ нужных параметров для разрешения триграфов). кроме того, код был просто с ошибками (видимо, наследие С89 или еще чего постарее). Зато у пацанов были модные триграфы!!!! Ах как я матерился!
Of course, the code must be complete enough to compile and link.
Re[3]: WTF operator
От: Erop Россия  
Дата: 14.08.10 12:13
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

L_L>(видимо, наследие С89 или еще чего постарее). Зато у пацанов были модные триграфы!!!! Ах как я матерился!


Очень может быть, что триграфы были наследием чего-то ещё более "постарее"
Так что я так подозреваю, что пацаны тоже матерились в своё время
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: WTF operator
От: Кодт Россия  
Дата: 14.08.10 18:53
Оценка: +2 :))) :)
Здравствуйте, Erop, Вы писали:

E>Знать перлисты какие-то писали

Перверты.
Перекуём баги на фичи!
Re[2]: WTF operator
От: alzt  
Дата: 16.08.10 18:15
Оценка:
Здравствуйте, Кодт, Вы писали:

Ytz>>
Ytz>>(foo() != ERROR)??!??! cerr << "Error occurred" << endl; 
Ytz>>


К>Интересно, кому-нибудь эти чёртовы триграфы где-нибудь пригодились? Мы же не на турэцкой пэчатающэй машинкэ Остапа Бэндэра пишем...


Неплохо бы в компиляторе реализовать фичу "генерация (и замена) исходников без триграфов". Наподобие генерации исходников с раскрытыми defin-ами.
Технически должно быть не сложно. После чего явно прописать в стандарте, что никаких триграфов быть не может, а если компилятор всё же встретит, то перепишет их все к чёртовой матери.
Re[3]: WTF operator
От: Ytz https://github.com/mtrempoltsev
Дата: 17.08.10 04:49
Оценка:
Здравствуйте, alzt, Вы писали:

A>Здравствуйте, Кодт, Вы писали:


Ytz>>>
Ytz>>>(foo() != ERROR)??!??! cerr << "Error occurred" << endl; 
Ytz>>>


К>>Интересно, кому-нибудь эти чёртовы триграфы где-нибудь пригодились? Мы же не на турэцкой пэчатающэй машинкэ Остапа Бэндэра пишем...


A>Неплохо бы в компиляторе реализовать фичу "генерация (и замена) исходников без триграфов". Наподобие генерации исходников с раскрытыми defin-ами.

A>Технически должно быть не сложно. После чего явно прописать в стандарте, что никаких триграфов быть не может, а если компилятор всё же встретит, то перепишет их все к чёртовой матери.

В последней студии триграфы по умолчанию отключены, включаются ключом /Zc:trigraphs Ранние версии вроде ворнинг выдавали.
Re[3]: WTF operator
От: Erop Россия  
Дата: 17.08.10 05:05
Оценка:
Здравствуйте, alzt, Вы писали:

A>Технически должно быть не сложно. После чего явно прописать в стандарте, что никаких триграфов быть не может, а если компилятор всё же встретит, то перепишет их все к чёртовой матери.


По идее для этого целый компилятор не нужен. У триграфов простая довольно грамматика
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: WTF operator
От: Centaur Россия  
Дата: 17.08.10 08:21
Оценка:
Здравствуйте, alzt, Вы писали:

A>Неплохо бы в компиляторе реализовать фичу "генерация (и замена) исходников без триграфов". Наподобие генерации исходников с раскрытыми defin-ами.


Компилятор (и препроцессор) не должен мочь переписывать исходники. Компилятор должен мочь компилировать исходники, доступные только для чтения.

Вот добавить ключ к препроцесссору, чтоб выдал на stdout входной текст с развёрнутыми ди- и триграфами — должно быть несложно.
Re[4]: WTF operator
От: alzt  
Дата: 17.08.10 09:26
Оценка:
Здравствуйте, Erop, Вы писали:

A>>Технически должно быть не сложно. После чего явно прописать в стандарте, что никаких триграфов быть не может, а если компилятор всё же встретит, то перепишет их все к чёртовой матери.


E>По идее для этого целый компилятор не нужен. У триграфов простая довольно грамматика


Целый компилятор может и не нужен. Но ведь все, кому триграфы могут помешать, уже имеют компиляторы. И реализовать такую фичу, используя существующую инфраструктуру компилятора проще, чем начинать всё с нуля.
Re[5]: WTF operator
От: Erop Россия  
Дата: 17.08.10 11:23
Оценка:
Здравствуйте, alzt, Вы писали:

A>Целый компилятор может и не нужен. Но ведь все, кому триграфы могут помешать, уже имеют компиляторы. И реализовать такую фичу, используя существующую инфраструктуру компилятора проще, чем начинать всё с нуля.


Ой не факт...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: WTF operator
От: Alexander G Украина  
Дата: 19.08.10 19:47
Оценка: +1 :)
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, Ytz, Вы писали:


Ytz>>
Ytz>>(foo() != ERROR)??!??! cerr << "Error occurred" << endl; 
Ytz>>


К>Интересно, кому-нибудь эти чёртовы триграфы где-нибудь пригодились? Мы же не на турэцкой пэчатающэй машинкэ Остапа Бэндэра пишем...


Было дело.
Автор: Alexander G
Дата: 14.01.09


Но лучше так не делать. Представляю как удивился бы другой разработчик, столкнувшись бы с этим чудо-хаком, если бы он не знал ни про триграфы ни что вообще такое #import, а столкнулся бы он с ним при портировании на VS2010, где триграфы по умолчанию отключены.
Русский военный корабль идёт ко дну!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.