我有一个变量,我希望在程序的其余部分运行之前在运行时初始化。初始化后,我不希望变量的值发生变化。是否有任何C语言构造可以执行此操作?
让我的主C程序包含在Prog.c文件中
//Contents of Prog.c
//...includes.. and variable initialization
int main(..)
{
//Initialize variables here
//.. Huge program after this where I don't want these constants to change
}
答案 0 :(得分:2)
你可以通过const
指针间接地做到这一点,至少:
typedef struct {
int answer;
} state;
const state * state_init(void)
{
static state st;
st.answer = 42; /* Pretend this has to be done at run-time. */
return &st;
}
int main(void)
{
const state *st = state_init();
printf("the answer is %d, and it's constant\n"," st->answer);
}
这样,所有main()
都有一个指向某些const
的{{1}}指针,无法修改。
答案 1 :(得分:2)
一个恒定的全局应该有效,是吗?
const int val = 3; // Set before main starts
// const, so it will never change.
int main(void)
{
printf("%d\n", val); // using val in code
}
但是,如果在编译时未知该值,则可以通过以下方式在运行时设置该值:
const int const* g_pVal;
int main(void)
{
static const int val = initialize_value();
g_pVal = &val;
printf("%d\n", *g_pVal);
}
答案 2 :(得分:0)
我能想到的唯一方法是,如果您将值读作非常量,然后调用一个取值为常数并将变量传递给它的函数。在函数内部,您可以完成所有希望的操作。