少し変更された MobileC ビルドを使用しているときに、興味深い問題が発生しました。
マクロでセグメンテーション違反が発生しますが、コードにprintfsを入れると (C が解釈されているため、それ以外の方法でデバッグすることはできません)、それが発生する正確なポイントを取得できません。
これはコードです:
...
printf("just to check there is no problem accessing "node" %d\n", node);\
printf("this will be printed\n"); \
node_type##_Destroy(node); \
printf("this will not be printed\n"); \
...
Destroy のコードは次のとおりです。
int name##_Destroy( name##_p name ) \
{ \
printf("this will not be printed\n"); \
...
コードのこの部分は ( printfsを除いて) 変更していないので、問題ないと思います。ここで何が起こっているのか分かりますか?