【问题标题】:Error 1 error C2099: initializer is not a constant [duplicate]错误1错误C2099:初始化程序不是常量[重复]
【发布时间】:2012-12-12 04:19:00
【问题描述】:

可能重复:
C compiler error - initializer not constant
Definition of global variables using a non constant initializer

我在下面给出了全局定义的 2 个变量,我得到了 C2099 错误。我正在使用 Visual Studio 2005。

以下是变量:

const char* key = "AZFFProgramFiles";
const char* val = getenv(key);

【问题讨论】:

  • 虽然代码在 C++ 中可以,但在 C 中不允许使用函数在全局范围内初始化变量。

标签: c


【解决方案1】:

由于val 是在静态文件级别声明的,因此编译器必须在编译时知道其值。情况并非如此,因为您通过调用getenv(key) 对其进行了初始化。这是因为全局值被放置在编译时创建的二进制文件的特殊存储区域中。

【讨论】:

  • const 限定符无关;您根本不能使用函数调用来初始化 C 中的全局变量(与 C++ 不同)。
  • 另外,请注意val 不是const 合格。它指向的类型是const-qualified。而且这样的指针完全能够指向不符合const 条件的对象。
  • 非常感谢..帮助了很多..你们摇滚!!! :)
猜你喜欢
  • 1970-01-01
  • 2011-09-02
  • 2020-08-14
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
  • 2020-02-16
  • 2020-03-27
  • 2012-04-10
相关资源
最近更新 更多