Ric*_*urs 4 c struct constants declaration
有人能告诉我结构声明的这两个版本之间的区别吗?
struct S
{
uint8_t a;
};
Run Code Online (Sandbox Code Playgroud)
和
const struct S
{
uint8_t a;
}
Run Code Online (Sandbox Code Playgroud)
其次是:
void main(void)
{
struct S s = {1};
s.a++;
}
Run Code Online (Sandbox Code Playgroud)
提示,我已经在 Visual Studio C++ 2010 Express 中尝试了 S 的两个版本,所以我知道两者都编译出错。
“const struct”什么都不做?"const struct S s = {1};" 当然可以,但这不是目前的问题。
问候丰富
/********************************************/
Run Code Online (Sandbox Code Playgroud)
我刚刚弄清楚了什么
const struct <typename> <{type}> <variable instances a, b, .., z>;
Run Code Online (Sandbox Code Playgroud)
是在做:
当 const 出现在“struct”之前时,所有变量实例都是 const,就好像它们被定义为:
const struct <typename> a, b, z;
Run Code Online (Sandbox Code Playgroud)
所以它确实做了一些事情,但当没有与结构声明一致的实例定义时就不会。
富有的
和:
const struct S
{
uint8_t a;
};
Run Code Online (Sandbox Code Playgroud)
那里的限定符const
是无意义的,甚至可能会导致某些 C 编译器出现编译错误。gcc
发出警告。
其目的似乎是声明数据类型struct S
。在这种情况下,正确的语法是:
struct S
{
uint8_t a;
};
Run Code Online (Sandbox Code Playgroud)
结构声明只是定义了数据类型。
const
限定符适用于变量而不是数据类型。因此,在结构声明之前添加 const 最多应该是多余的。
归档时间: |
|
查看次数: |
18769 次 |
最近记录: |