是否存在关于默认内联函数的IGNORE C ++标准的编译器?

时间:2009-03-17 16:12:16

标签: c++ inline standards-compliance

C ++ ISO标准说:“在类定义中定义的函数是内联函数。” *

你知道IGNORE这个规则的任何编译器吗?

你知道那些不会在那里提出'内联建议'的编译器吗?

(请不要重复关于内联的理论,我知道这一点 - 我需要一个实际的答案)

4 个答案:

答案 0 :(得分:1)

允许所有编译器忽略他们决定的任何内联建议。例如,如果他们认为函数太复杂,则不会内联。如果您获取函数的地址,则可能会在某些位置内联函数,但会在其他位置生成一个完整函数以供地址指向。

在将类定义中的函数定义为对编译器的建议时,请考虑inline和隐式内联。

答案 1 :(得分:1)

这不是一个规则,它只是一个事实陈述。该规范只是声明该函数是定义内联。这使编译器更容易实际内联生成的代码,但标准没有要求这样做。

他们是不同的概念。生成的代码看起来是由编译器单独决定的,标准并没有真正强加任何要求(当然除了它应该按照指定的行为)。

答案 2 :(得分:0)

在gcc中你可以使用

-finline-limit=n
-fno-inline

答案 3 :(得分:0)

请参阅我对一个非常相似问题的回答:When is "inline" ineffective? (in C)

总结:内联只需要允许多个定义。任何调用更改的函数都是纯可选的。