想让程序跳转到绝对地址0x100000处执行,该如何做?
嵌入式笔试题:想让程序跳转到绝对地址0x100000处执行,该如何做?网上看到有如下答案:((void()(void))0x100000)();经过在VC++6.0和Linux gcc4.4.3下测试,均不能通过编译。VC++6.0报错:error C2100: illegal indirectionGCC报错:error: void value not ignored as it ought t
·
嵌入式笔试题:想让程序跳转到绝对地址0x100000处执行,该如何做?
网上看到有如下答案:
((void()(void))0x100000)();
经过在VC++6.0和Linux gcc4.4.3下测试,均不能通过编译。
VC++6.0报错:error C2100: illegal indirection
GCC报错:error: void value not ignored as it ought to be
应该是怎么写呢?
经过测试,有两种方法:
答案1. ((void()(void))0x100000)();
答案2. ((void(*)(void))0x100000)();
仔细观察,第一种写法只是第一个的位置不同,第二种写法少了一个,但是都能正确编译通过,且正确执行。
为什么会有这两种答案呢?查阅资料后发现,与历史原因有关……
先来看看如下例子:
例一:
[cpp] view plain copy print?
include
include
更多推荐
已为社区贡献1条内容
所有评论(0)