我知道可以使用#define
宏来声明常量。通过这种方式,定义整数、浮点数或字符字面值为常量将变得简单。
但是,对于更复杂的数据结构,如数组或结构体,例如:
typedef struct {
int name;
char* phone_number;
} person;
我希望能够初始化一次,然后使其成为一个不可编辑的结构体。
在面向对象的语言中,存在“final”关键字可以轻松实现此功能,但是在C语言中没有这样的东西。我想到的一个解决方法是使用“setjmp”和“longjmp”来模拟try-catch括号并在检测更改时进行回滚。您需要将备份存储在文件/内存对象中,如果您要保护许多此类对象免受意外更改的影响,则可能会有点混乱。
问:是否可以在C语言中有效地表示这种模式?如果是,如何实现?
c99
标签,因为在C编程的开始时就可以声明变量为常量。 - Baddafinal
关键字可以轻松实现这一点。但是在 C++、C# 和 Python 中并没有final
关键字。 - phuclv