|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
[这个贴子最后由bluepuma在 2005/04/09 12:03pm 第 1 次编辑]
小弟初学ARM,遇到一个c函数的inline问题,希望高手给以解答。
我把一个函数声明为inline函数,例如:
int __inline cFunc(int x, int y )
{
int z;
...
...
return z;
}
首先,这个函数在ads下可以编译通过,而在sdt下编译不通过,编译器不认__inline;
其次,编译完成后,我看了一下编译后的代码,这个函数并没有实现inline,
仍旧是跳转进入的
而且,armcc的编译选项中,似乎没有与inline相关的设置,对此我很迷惑,
希望高手能解小弟之忧!!
还有就是,如果我把上述的示例函数改为define,再将汇编代码直接嵌入c代码中,我该怎么写,怎么解决运算结果的返回问题(代码如下所示);
#define cFunc(x, y) \
({ int z; \
_asm{ \
... \
} \
z \/*z,怎么处理*/
})
首先是编译器在这里不认第2行中的"{",而在这里我声明了局部变量,嵌入了汇编代码,必须用{ }将其括入;而且即使解决了这些问题,我又该如何将作为运算结果的局部变量z返回,这样的define中是不能用return 的,在嵌入的汇编代码中能添加什么语句解决这个问题么?
|
|