C语言 结构体声明中const成员如何初始化 20
typedefconststruct{constintn;}A;constintnum=7;Aa={num};报错!c的编译环境,请高手指教阿!!!...
typedef const struct{ const int n; }A;
const int num = 7;
A a = { num };
报错! c的编译环境,请高手指教阿!!! 展开
const int num = 7;
A a = { num };
报错! c的编译环境,请高手指教阿!!! 展开
9个回答
展开全部
//估计是你的分号问题,不能是中文符号,程序只支持英文符号
#include <stdio.h>
typedef const struct{ const int n; }A ;
int main()
{
const int num = 7;
A a = { num };
printf("a=%d\n" , a.n );
system("pause");
return 0;
}
以上在windows dev C++编译器下测试通过
#include <stdio.h>
typedef const struct{ const int n; }A ;
int main()
{
const int num = 7;
A a = { num };
printf("a=%d\n" , a.n );
system("pause");
return 0;
}
以上在windows dev C++编译器下测试通过
更多追问追答
追问
都说了要在c环境下编译阿,c++可以编译早晓得了。。。不是什么;号之类的低级错,就想知道有没有办法在num前面cast个什么让它成功
追答
呵呵,那是编译器的名字 DEV C++
写的程序就是用C编译运行的。
现在的较新版本的C编译器都支持上面的程序写法
不知道你用的是什么编译器?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
学习了
c语言结构体变量尽量不要用const
C语言的任何const变量都不能用const变量初始化,这是C语言和C++的一个很大的不同……
c语言结构体变量尽量不要用const
C语言的任何const变量都不能用const变量初始化,这是C语言和C++的一个很大的不同……
更多追问追答
追问
大侠,谢谢了,现在我A a={ num}的这个num 必须是个 const 所以想请教下,能否 在 num前面cast个什么东西 让它编译通过,c环境,不是c++环境。而且,还有种情况,我删除了typedef const struct{ const int n; }A中的const,然后编译,报的错都一样,说是expression must have a constat value。还望大侠不吝赐教阿。。。拜谢
追答
const变量必须在定义是初始化,以后其值不可以改变
你可以把程序贴出来看一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你定义的const结构体变量是全局变量属于静态存储区只能赋值常量值不能赋值变量
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言的任何const变量都不能用const变量初始化,这是C语言和C++的一个很大的不同……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询