c - 包含内联函数的 header ,我可以将代码移到头文件之外并仍然内联所有内容吗?

标签 c header inline code-readability

我已经结束了将许多小的内联函数放入我包含在许多编译单元中的头文件中, 代码被编译器正确内联,程序运行起来非常棒。

但是现在头文件是非常不寻常的东西(因为是头文件), 为了使其更具可读性,我想做这样的事情:

#ifndef MY_HEADER_H
#define MU_HEADER_H

static inline 
void my_fnct (my_param a);

#include "my_header.inline.c"

#endif

文件 my_header.inline.c 将如下所示:

static inline 
void my_fnct (my_param a)
{
    // .. my code ..
}

然后,当我需要这些函数时,我只需包含头文件。

我的问题是:有没有更好的方法来完成这个而不用太多代码填充头文件? 或者我可以这样做并期望其他开发人员能够毫无问题地理解这段代码?

最佳答案

不,你不能。但是,您可能会使用 GCC 的链接时间优化功能(然后一些调用可能会被内联,即使该函数未声明为 inline 并且在每个编译单元的 header 中都不可用),例如使用 gcc -flto 编译并链接(这需要最新的 GCC 编译器,例如至少 4.6,并且会减慢构建时间)。

关于c - 包含内联函数的 header ,我可以将代码移到头文件之外并仍然内联所有内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9858791/

相关文章:

php - 在 HTTPS 期间访问 Guzzle 代理 header

visual-studio-2012 - 在 Visual Studio 2012 中使用 F# 的内联函数的代码覆盖率

c - 指针对齐问题的原因是什么?

c - MIPS memcpy 问题(我认为)

php - 通过 fopen/fwrite 使用 PHP 创建 CSV 文件,但也向其写入标题

data-structures - 具有 native /语法/内联图支持的语言?

c++ - C++ 中的宏会提高性能吗?

C - fork - 等待问题

c - 在内核空间中,如何获取ext4格式磁盘上的文件对应的物理地址

html - 难以尝试对齐标题和导航栏