Jestem refactoring jakiś bardzo stary kod źródłowy, który jest pełen błędów i bardzo wątpliwych praktyk, przynajmniej dla nowoczesnych standardów. Teraz natknąłem jednej linii, która po prostu nie mogę rozszyfrować:Cryptyczna linia "??! ??!" w dotychczasowym kodzie
p
i k
są typu int *
return p??!??!k?p?*p:sizeof(*k):0;
Kiedy zobaczyłem go nie mogłem uwierzyć własnym oczom - Wiem operatora ?
, ale jego składnia jest bool ? trueresult : falseresult
i operator ??
nie ma sensu (leniwe oceny naprawdę nie mają tu zastosowania), nie mogłem znaleźć odniesienia do tego tajemniczego operatora w dowolnym miejscu.
Byłoby naprawdę fajnie, gdyby ktoś rzucił trochę światła na tę sprawę.
http://en.wikipedia.org/wiki/Digraphs_and_trigraphs#C – qrdl
Które kompilatora używasz ? gcc na przykład domyślnie ignoruje trigraphy. I tak, to musi być * bardzo, bardzo stary * kod. – devnull
@devnull To gcc, ale jest skompilowany z plikiem Makefile. A teraz, gdy już wiem, czym są trigraphy, również wiem, dlaczego do kompilatora jest przekazywana flaga '-trigraphs';) – user2573221