硬汉嵌入式论坛

 找回密码
 立即注册
查看: 552|回复: 4
收起左侧

[Keil Studio] Keil 使用attribute 构建初始化链表

[复制链接]

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2024-1-26 14:46:29 | 显示全部楼层 |阅读模式
前言:在一个工作区创建两个工程 app 和 base, base 工程生成的 lib 库被 app 工程调用。

程序文件如下图所示:
1.png


编译生成如下警告:

2.png

这些符号位于文件hwll_list.c 文件中,如下图
3.png

如果将文件 list.c 和 hwll_list.c 放到 app 工程下,同时不引用 base 工程的静态库,则不会产生该警告。


test.rar

974.91 KB, 下载次数: 8

回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2024-1-26 14:47:18 | 显示全部楼层
如何消除上面的警告信息呀
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106757
QQ
发表于 2024-1-26 15:41:19 | 显示全部楼层
仅仅是消除警告吗,如果是消除警告,在Option选项里面屏蔽下即可。
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2024-1-27 12:42:31 | 显示全部楼层
同一工程下,编译生成的 hwll_list$$Base 和 hwll_list$$Limit 这两个全局变量是有地址的;而在两个工程下,引用外部库后,这两个全局变量是没有实际地址,同时也并没有生成全局标号 hwll_list_a 和 hwll_list_b 指针。为啥会有这样的区别。
不在同一工程下.png
同一工程下.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106757
QQ
发表于 2024-1-28 09:14:28 | 显示全部楼层
夏阳之光 发表于 2024-1-27 12:42
同一工程下,编译生成的 hwll_list$$Base 和 hwll_list$$Limit 这两个全局变量是有地址的;而在两个工程下 ...

没有地址是被优化掉了,或者工程有误。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 21:18 , Processed in 0.253120 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表