如何在C中指定变量为final?

cs9*_*s95 4 c final

我知道可以使用#define宏声明常量.有了这个,将整数,浮点或字符文字定义为常量会很简单.

但是,对于更复杂的数据结构,例如数组或结构,例如:

typedef struct {
    int name;
    char* phone_number;
} person;
Run Code Online (Sandbox Code Playgroud)

我希望能够初始化一次,然后使其成为一个不可编辑的结构.

在面向对象的语言中,存在final关键字,可以轻松完成此任务,但在C中没有这样的事情.我想到的一个解决方法是使用setjmplongjmp模拟try-catch括号并在检测到更改时执行回滚.您需要将备份存储在文件/内存对象中,如果您想要保护许多此类对象以防止意外更改,则可能会产生一些混乱.

问:有可能在C中有效地表示这种模式吗?如果是,怎么办?

til*_*z0R 11

使用const的关键字变量.这是一种如何防止以后修改值的方法.

const int a = 5;
a = 7; //Error, you cannot modify it!
Run Code Online (Sandbox Code Playgroud)

例如,在具有闪存的嵌入式系统中,如果可用,可以通过链接器将此变量置于闪存中.但这不是必要的.