打印
[应用相关]

用C怎么写

[复制链接]
1066|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shashaa|  楼主 | 2019-7-23 18:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void (*reset)(void)=0x00000000;
假入我现在想把reset();放在从0x00000400处开始的位置,请问用C怎么写???

编译环境是GCC+studio

使用特权

评论回复
沙发
qiangweii| | 2019-7-23 18:44 | 只看该作者
汇编格式 指明一下代码的位置。
C就不用指明位置了,编译器自动处理。所以说C方便嘛

使用特权

评论回复
板凳
litengg| | 2019-7-23 18:45 | 只看该作者
难道你是想在400H的位置调用reset程序
这要绝对定位了
用汇编比较好,C的话没有标准方法,取决于编译器

使用特权

评论回复
地板
androidbus| | 2019-7-23 18:47 | 只看该作者
这个你得研究一下编译器的手册,不然直接用汇编操作吧

使用特权

评论回复
5
feiqi1| | 2019-7-23 18:49 | 只看该作者
void (*reset)(void)=0x00000400;可以这样写

使用特权

评论回复
6
xia00| | 2019-7-23 18:51 | 只看该作者
void (*reset)(void)不是空返回值的吗,不对吧!

使用特权

评论回复
7
hfdy01| | 2019-7-23 18:53 | 只看该作者
这个用法在C标准里面是未定义的,就是说取决于编译器与硬件。

使用特权

评论回复
8
CallReceiver| | 2019-7-23 18:54 | 只看该作者
说明你这个问题可能本身没啥意义 可能是走上歧途了 方法有问题 思路有问题。。

使用特权

评论回复
9
boy1990| | 2019-7-23 18:56 | 只看该作者
连我这个C语言高人(据说现在大部分人不敢说自己精通C语言,但是本人不仅仅是精通C,而是极其精通C语言) 都没看明白

使用特权

评论回复
10
sourceInsight| | 2019-7-23 18:58 | 只看该作者
有一段代码,我就是想把这段代码从指定地址开始存放

使用特权

评论回复
11
bbapple| | 2019-7-23 18:59 | 只看该作者
把reset设为全局变量,然后用链接脚本指定存放位置和运行位置就OK了啊。。。

使用特权

评论回复
12
handleMessage| | 2019-7-23 19:01 | 只看该作者
也可以参照中断函数入口的处理方法。

使用特权

评论回复
13
zhouhuanの| | 2019-7-23 19:01 | 只看该作者
这不是c语言的问题,这是linker的问题。

使用特权

评论回复
14
wanglaojii| | 2019-7-23 19:03 | 只看该作者
那个函数单独列一个文件,链接的时候对那个文件指定运行地址就OK了。。

使用特权

评论回复
15
laozhongyi| | 2019-7-23 19:04 | 只看该作者
C语言里边的pragma预编译指令不知道能否直接实现这个功能,LZ自己翻阅以下相关资料吧

使用特权

评论回复
16
Edisons| | 2019-7-23 19:06 | 只看该作者
我理解楼主的意思,楼主是为了系统万一崩溃的时候可以自动复位

使用特权

评论回复
17
_gege| | 2019-7-23 19:07 | 只看该作者
可以这样写,
typedef void(*FUN)(void);
FUN Reset=0x0000;

reset=(FUN)(0x00400);

使用特权

评论回复
18
Mozarts| | 2019-7-23 19:08 | 只看该作者
如果直接复位,需要修改引导程序。

使用特权

评论回复
19
Listate| | 2019-7-23 19:09 | 只看该作者

放在0x0400位置 芯片是否支持?中断向量表是否支持重定位。

使用特权

评论回复
20
xfbobowu| | 2019-7-25 20:14 | 只看该作者
可以的,使用__attribute__ 机制就可以。如下声明一下就可以了。
void reset(void)__attribute__((section(".ARM.__at_0x00000400")));

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

142

主题

1494

帖子

6

粉丝