1

在使用优化选项 /Ob1 编译 Visual C++ 项目时,只有带有关键字 __inline / inline 的函数或在类定义中定义的函数才会被内联(即使这样也不一定,但只有在编译器认为合适的情况下)。

我的问题是,是否可以告诉编译器(在 Visual C++ 下)仅内联使用 inline 关键字内联定义的函数,而不是在 /Ob1 优化选项下内联定义在类定义中的方法?

g++ 编译器是否与 Windows 上的 /Ob1 选项相同(比如说,在 g++ -O3 选项下),它是否内联定义在类定义中的成员方法?如果是,有没有办法告诉它只内联带有 inline 关键字的类定义之外的函数?

4

2 回答 2

5

C++ 标准(第 7.1.2/3 节)指定在类定义中定义的函数被隐式声明为内联,主要是因为它们需要不违反单一定义规则。所以你所要求的基本上是一个不内联声明为内联(隐式)的函数的选项。如果您不想将函数声明为内联(无论出于何种原因),则不应在类定义中定义它。

于 2012-12-03T16:09:31.750 回答
0

用于#pragma optimize逐个函数地指定优化指令:http: //msdn.microsoft.com/en-us/library/chh3fb0k%28v=vs.100%29.aspx

于 2012-12-03T15:54:25.040 回答