我在C和C++中都有以下代码
static void callback(char const* fname, int status)
{
static char const* szSection = fname;
//other stuff
}
Run Code Online (Sandbox Code Playgroud)
在C++中,这可以在没有警告或错误的情况下编译.在CI中获取编译错误"初始化程序不是常量".为什么两者之间有所不同?我正在为Visual Studio 2008使用VC9编译器.
我正在尝试将文件名作为输入,并在第一次设置文件的路径.所有进一步的回调都用于检查文件中的更新,但路径本身不允许更改.我在char const*中使用了正确的变量吗?
Ada*_*eld 18
因为C和C++中的规则不同.
在C++中,static函数内部的变量在第一次到达代码块时被初始化,因此允许使用任何有效的表达式对它们进行初始化.
在C中,static变量在程序启动时初始化,因此它们需要是编译时常量.
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |