Я работаю в существующем C-коде, который имеет пару строк с утверждениями, подобными этому:
struct collect_conn *tc = (struct collect_conn *)
((char *)c - offsetof(struct collect_conn, runicast_conn));
Структура collect_conn имеет следующие строки:
struct collect_conn {
struct runicast_conn runicast_conn;
struct announcement announcement;
const struct collect_callbacks *cb;
struct ctimer t;
uint16_t rtmetric;
uint8_t forwarding;
uint8_t seqno;
};
Я использую Eclipse CDT, и он отмечает линию оранжевой кривой кривой как "синтаксическую ошибку". Я думаю, что он отмечен как таковой индексом CDT. Однако компиляция (вручную в терминале) не представляет проблемы.
Это немного неудобно, так как элементы в строке не индексируются (поэтому дерево иерархии вызовов не всегда правильно, или выделение элементов и т.д.)
Почему Ecipse не похожа на строку?