Перейти к содержанию
    

typeof в Keil

Если ли в keil поддержка этой штуки?

Есть ли какие-то другие способы узнать тип переменной?

Нужно для макроса:

#define list_for_each_entry(pos, head, member)                \
    for (pos = list_entry((head)->next, typeof(*pos), member);    \
         &pos->member != (head);                     \
         pos = list_entry(pos->member.next, typeof(*pos), member))

Это кусок из ядра linux. Но там, судя по всему, используется gcc.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В документе ARM Compiler v5.06 for µVision armcc User Guide ключевое слово typeof не упоминается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, печально это. Компилировать в режиме C++ не вариант.

Видимо, придется явно передавать тип в макрос.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Компилировать в режиме C++ не вариант.

 

А почему? Широко используются специфично сишные приемы? А какие?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, если я правильно понимаю, это нужно будет каждый исходный файл, в который подключается заголовочник с описанным выше макросом, компилировать как исходник C++? Так не пойдет, ибо проект пишется только на C. Даже C99 не везде используется.

Вот если бы можно было один единственный файл компилить в C++, тогда еще можно было бы подумать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...