なぜこれが機能するのですか:
#include <sys/types.h>
#include <stdio.h>
#include <stddef.h>
typedef struct x {
int a;
int b[128];
} x_t;
int function(int i)
{
size_t a;
a = offsetof(x_t, b[i]);
return a;
}
int main(int argc, char **argv)
{
printf("%d\n", function(atoi(argv[1])));
}
offsetof の定義を正しく覚えていれば、それはコンパイル時の構造です。'i' を配列インデックスとして使用すると、非定数式になります。コンパイラがコンパイル時に式を評価する方法がわかりません。これがエラーとしてフラグ付けされないのはなぜですか?