C programming language
Базовые знания о С и Unix/Linux у меня где-то на уровне катания на велосипеде — когда-то научился, в последнее время пользуюсь редко, но если надо — стандартные действия на автопилоте выполняю. С недавних пор приходится расширять знания о C, начинаю понимать, что это уже далеко не тот язык, который я знал. Особенно если речь идет о расширениях, которые поддерживает gcc.
Вот, к примеру typeof — конструкция, которая позволяет получить тип выражения. Очень удобно, например, в макросах, если надо завести переменную такого же типа, как один из аргументов:
#define max(a,b) \
( { typeof (a) _a = (a); \
typeof (b) _b = (b); \
_a > _b ? _a : _b; \
} \
)Это макрос вычисления максимума, который вычисляет каждый из своих параметров ровно один раз. Как тут обойтись без typeof?
Но и без gcc чудес хватает — знаете ли вы, что в языке С (стандарта С99) вместо токенов
[ ] { } # ##
могут использоваться токены
<: :> <% %> %: %:%:
которые называются digraphs?
09.06.2007
Метки: C Рубрики: Разработка, Языки
ЖЖ
2 комментария
«Уже далеко не тот язык, который я знал» — в смысле, они меняются что ли? Апдейты есть? Извините за глупый вопрос, я умею только картинки в бейсике рисовать)
Со времен Кернигана & Ритчи, по книге которых я первоначально знакомился с этим языком, появился стандарт С89, потом С99, да и конкретные реализации вводят свои расширения.
Написать комментарий