C - Проверить тип (перенную) на указатель
От: Vain Россия google.ru
Дата: 07.07.11 21:34
Оценка:
Не знаю даже куда это больше подходит, сюда или в этюды..
Вот надо было мне проверить перед арифметикой над переменной ,что переменная не указатель, иначе — ошибка компиляции. Всё бы хорошо, только язык не плюсы — ни шаблонов тебе, ни перегрузки функций, да ещё и переменные объявлять нужно в начале блока функции. Вообщем нашёл решение не хуже шаблонов. Показалось интересным.
void dummy(type var, type var2)
{
  STATIC_ASSERT_NO_POINTER_VALUE(var); /* all or nothing */

  type res = var-var2; /* valid if not pointer arithmetic */

  /* ... */
}

#define STATIC_ASSERT_NO_POINTER_VALUE(var) ...

Во что надо задефайнить макрос?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.