c++ - c 结构不允许静态成员,而 c++ 允许

标签 c++ c

今天,我对c 结构与c++ 结构 的行为感到有点惊讶。

fun.cpp: http://ideone.com/5VLPC

struct nod
{
    static int i;
};

int main()
{

    return 0;  
}

上面的程序完美运行。

但是,

同样的程序在C环境下运行,报错:

prog.c:3: error: expected specifier-qualifier-list before ‘static’

请看这里:http://ideone.com/2JRlF

为什么会这样?

最佳答案

因为在 C++ 中,结构只是具有默认可见性 public 的类。所以在 C 中,结构只是数据的聚合,它不知道它可以被视为独立类型这一事实。

另见 What are the differences between struct and class in C++

关于c++ - c 结构不允许静态成员,而 c++ 允许,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11138899/

相关文章:

c# - 在浏览器中创建由 en 事件调用的 C# windows 服务

c++ - 为什么在将右值按值传递给函数时不调用复制构造函数

c++ - vector 的 Push_front() 替代方案和 map 的 operator++

c - Malloc 结构的大空间并像 c 中的数组一样访问它

c# - 如何在 C# 中编写类似于 String.isNullOrEmpty 的 C 代码

python - SWIG 包装 C 库引发异常的最优雅方式

c++ - 使用构造函数值在 C++ 中创建自定义类

c++ - 如何使用git上的salsa20

c - 如何处理 C 中的错误?

c - 为什么这个程序给我一个无限循环?简单的程序