数年前、C が標準化される前は、アドレスに構造体セレクターを使用することが許可されていました。たとえば、次のコードは許可され、頻繁に使用されていました。
#define PTR 0xAA000
struct { int integ; };
func() {
int i;
i = PTR->integ; /* here, c is set to the first int at PTR */
return c;
}
あまり綺麗じゃなかったかもしれませんが、私は好きです。私の意見では、この言語のパワーと汎用性は、制約の欠如にも依存しています。現在、コンパイラはエラーをダンプするだけです。GNU C コンパイラでこの制約を取り除くことができるかどうか知りたいです。
PS: 同様のコードが C の発明者によって UNIX カーネルで使用されました (V6 では、いくつかのダミー構造が param.h で宣言されています)。