2

我有一个变量,我想在程序的其余部分运行之前在运行时初始化。初始化后,我不希望变量的值改变。是否有任何 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
}
4

3 回答 3

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);
}

这样, all main()has 是const指向某些state它无法修改的指针。

于 2013-07-01T12:05:25.987 回答
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);
}
于 2013-07-01T12:12:06.567 回答
0

我能想到的唯一方法是,如果您将值读取为非常数,然后调用一个采用常数值并将变量传递给它的函数。在函数内部,您可以进行所有希望的操作。

于 2013-07-01T12:05:32.833 回答