结论
无论ACE
组件默认编译设置,还是基于ACE
的应用程序,__ACE_INLINE__
的编译宏默认打开!
ACE默认实现是高效的
__ACE_INLINE__具体影响
在ACE
的源代码中大量充斥着*.inl
文件,这些文件将在__ACE_INLINE__
宏的指导下进行内容展开
- 使能
作为内联函数,直接展开在
*.h
头文件中
- 关闭
函数直接展开在
*.cpp
实现文件中,是否最终被内联,取决于编译、集成方式
证据链
ACE编译
在编译输出中能够直接见到__ACE_INLINE__
...
g++ ... -D__ACE_INLINE__ ...
...
应用程序
#include <ace/Log_Msg.h>
int ACE_TMAIN (int argc, ACE_TCHAR *argv[])
{
ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%D %M %P hello world for ACE , thead id: %u ...\n")));
#ifdef __ACE_INLINE__
ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%D %M %P ACE's app compiling __ACE_INLINE__ macro is configured!\n")));
#else
ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%D %M %P ACE's app compiling __ACE_INLINE__ macro is not configured!\n")));
#endif
return 0;
}
通过条件编译证明