工具/软件:Code Composer Studio
尊敬的各位:
我指的是CCS 5.1 .1中的C6000编译器。 我们使用的是-O3 -MS3
编译器似乎拒绝涉及struct或volatile参数的函数内联。 在“2.11 5内联限制”一节中也提到了这一点。 因此,我还收到消息681 'The function ... cannot be inlined'。 (此消息仅指要内联的函数,而不是调用的位置)
但是,我们经常使用短联用于类型转换。 一个(毫无意义的)示例:
----------------
typedef结构{
内部低;
Int HIGH (内部高)
} int32separate;
typedef联合{
Long I64 ;
int32单独ISEP;
} int64var;
inline int64var test_add(int64var x)
{
int64var结果= x;
result.isep.low ++;
result.isep.high ++;
返回结果;
}
int64var test_var_dummy;
void test_add_main (void)
{
test_var_dummy = test_add(test_var_dummy;
}
----------------
我再次确认这在GCC 4.4 的不同平台上一直有效(并已内联),并且是那里最快的解决方案。
GCC中的行为是否发生了变化,或者这是TI DSP特定的行为吗? 是否有任何方法可以覆盖此问题?
感谢您的帮助
亚历山大