ファイルの 1 つで定義された変数があります。ファイル自体のコードによって操作される可能性がありますが、外部ファイルに対しては常に定数値です。
この変数に定義されているファイル内の値を割り当てる際にエラーを発生させずに、変数を定数として宣言するにはどうすればよいですか?
右辺値は変更できません。アクセサー関数を使用してアクセスすると、右辺値のみを提供することが保証されます。
static int value;
extern int getconst();
int getconst() {
return value;
}
これにより、次のようになります。
getconst() = -1; // Compiler error
const
または、へのポインターを介して値を公開できますconst int
。
#include <stdio.h>
static int value = -1;
extern const int * const public_non_modifiable;
const int * const public_non_modifiable = &value;
int main() {
printf("%d\n", *public_non_modifiable); // fine
*public_non_modifiable = 0; // compiler error
return 0;
}