4904|7

2941

帖子

4

TA的资源

五彩晶圆(中级)

楼主
 

如何定义const 类型的结构体变量 [复制链接]

我定义了一个结构体,我希望所有的定义都是放在代码区的不是RAM内存中。

 

 

typedef struct 
{
   const int id;
   const char *name;
   struct NodeType *Link;
}NodeType;


const char* str1="tom";

NodeType node1,node2,node3;

main{
        node1.id = 1;
		node1.name = str1;
}

所有的定义都没有问题,但是到了初始化node1.id = 1;这里就无法通过了。编译器用的是keil 5

 

最新回复

const要初始化   详情 回复 发表于 2021-7-9 21:45
点赞 关注

回复
举报

6040

帖子

195

TA的资源

版主

沙发
 

const NodeType node1={0, "tom", &node2};

应该是这样的,并且在声明的时候就要初始化。里面不用的成员不用指定const.

既然你想放到常量区,就不可能在主函数里初始化了

点评

好像不可以使用指针。  #144: a value of type "NodeType *" cannot be used to initialize an entity of type "const struct NodeType *"  详情 回复 发表于 2021-7-9 14:52
 
 

回复

1942

帖子

2

TA的资源

版主

板凳
 

你结构体中有const类型的,那创建的时候就要初始化,像楼上那样创建就可以了。

 
 
 

回复

2941

帖子

4

TA的资源

五彩晶圆(中级)

4
 

const typedef struct 
{
   const int  id;
	 const char *name;
	 const struct NodeType *Link;
}NodeType;

/*=====================================*/


const  NodeType node3={2,"",NULL};
const  NodeType	node2={1,"jack",&node3};
const  NodeType node1={0,"tom",&node2};

非常感谢,刚刚试过,只有const  NodeType node3={2,"",NULL};这句是可以的,其它的都无法编译。

 
 
 

回复

2941

帖子

4

TA的资源

五彩晶圆(中级)

5
 

我以为是&node3这个符号的问题,看来不是。

看来在结构体中无法使用指针???

 
 
 

回复

2941

帖子

4

TA的资源

五彩晶圆(中级)

6
 
lcofjp 发表于 2021-7-9 12:39 const NodeType node1={0, "tom", &node2}; 应该是这样的,并且在声明的时候就要初始化。里面不用 ...

好像不可以使用指针。

 #144: a value of type "NodeType *" cannot be used to initialize an entity of type "const struct NodeType *"

 
 
 

回复

6040

帖子

195

TA的资源

版主

7
 

因为你定义的结构体语法不对,我在上面没说以为你帖子里笔误。

typedef struct _NodeType
{
   const int id;
   const char *name;
   struct _NodeType *Link;
}NodeType;

 

赞赏

1

查看全部赞赏

 
 
 

回复

7649

帖子

18

TA的资源

五彩晶圆(高级)

8
 

const要初始化

 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表