私は、これに似たステートメントを含む数行の既存のCコードで作業しています。
struct collect_conn *tc = (struct collect_conn *)
((char *)c - offsetof(struct collect_conn, runicast_conn));
struct 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はその行がそのまま好きではないのですか?