Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет kouzdra ([info]kouzdra)
@ 2010-08-03 10:48:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
К недавнему посту:
Я радовался фрагменту кода из GTK+:

int width = 
    ((union { char *string; unsigned int word; })
           nl_langinfo(_NL_PAPER_WIDTH)).word


На самом деле это обернуто в макру (файл gtk/gtkpapersize.c, если кому-то это интересно):

#define NL_PAPER_GET(x)         \
  ((union { char *string; unsigned int word; })nl_langinfo(x)).word


но, imho, это ничего не меняет: imho это полный эквивалент

#define NL_PAPER_GET(x) ((unsigned)nl_langinfo(x))


Вопрос - на фига было использовать компиляторно-зависимую конструкцию в контексте, где она
1) имеет точный аналог в рамках стандарта
2) этот аналог еще и короче и понятнее

Или я все-таки чего-то не понимаю и есть какая-то тонкая разница?


(Читать комментарии) - (Добавить комментарий)


[info]ketmar
2010-08-04 16:43 (ссылка)
есть. чтобы вражеский компилятор подавился.

(Ответить)


(Читать комментарии) -