ZHCUAQ1F july 2015 – april 2023
将头文件中的函数声明为静态内联函数时,必须遵循额外的过程以避免在优化器未运行时出现潜在的代码大小增加问题。
为了防止头文件中的静态内联函数在关闭内联时导致代码大小增加,请执行以下程序。这允许在关闭内联时进行外部链接;这样一来,整个目标文件中只存在一个函数定义。
在以下示例中,strlen 函数有两个定义。第一个定义(Example3-2)位于头文件中,是内联定义。仅当 _INLINE 为真时使用优化器时会自动为您定义 _INLINE),该定义才启用,并且原型将声明为静态内联。
第二个定义(请参阅Example3-3)用于库,确保在内联禁用时 strlen 的可调用版本存在。由于这不是内联函数,因此_在包含 string.h 之前_INLINE 预处理器符号是未定义的(#undef),(以生成 strlen 原型的非内联版本。