嵌入式笔试题:想让程序跳转到绝对地址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

Logo

更多推荐