Вопрос по Си
Mar. 4th, 2018 09:25 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Расскажите, насколько легальна в Си вот такая штука:
Есть некий массив сопоставляющий имя и значение, и есть еще возможность значения по умолчанию, которое имени не имеет.
Чувак предлагает делать так:
#define NAME_DEFAULT ((const char *) -1) /* pseudo-name for default value */
А потом проверять
if(Chto_to->name == NAME_DEFAULT)
Где name -- это char*
Для меня это какое-то страшное сишное конлдунство, я не могу оценить насколько оно корректно и переносимо между компиляторами.
Потому как я бы право слово скорее #define NAME_DEFAULT "" сделал бы. Ибо пустого имени все равно не бывает. И потом при помощи сравнения строк его проверял бы. Но может это у меня просто нету правильной сишной закалки.