typedef int* ptr_t;
int target;
const ptr_t a = ⌖
*a = 6; //OK
a = ⌖ //<- error: assignment of read-only variable ‘a’
明らかに、ポインターは定数であり、ポイントされた値ではありません。これは、#define が使用された場合とは対照的です。
typedef で宣言されたポインターに修飾子を適用するための規則は何ですか?
実際の例として、コードを検討してください
void (**foo)(void);
トップレベルのポインターを const (たとえば、ハードウェアの場所を指す) として修飾し、次のポインターを volatile (たとえば、独立したハードウェアによって変更可能) ポインターとして修飾する型を型定義するにはどうすればよいでしょうか。
typedef void (**foo)(void)
これが固定された宣言である場合、ソース コードで上記の操作を実行する必要があるのはなぜですか?