Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 静态函数和内联函数应该在.h文件中定义吗?_C - Fatal编程技术网

C 静态函数和内联函数应该在.h文件中定义吗?

C 静态函数和内联函数应该在.h文件中定义吗?,c,C,当我用C编写软件时,我应该把静态和内联函数放在.h或.C文件中吗?假设多个C源文件包括.h文件,那么.h文件中的内联函数是可以的,但我不确定你为什么希望.h文件中的静态函数最终被复制,每个C源文件一次。编译器可能足够聪明,不会为C源文件中未调用的静态函数生成代码。不要将静态函数(或变量)的声明或定义放入.h文件中。这违背了保持函数/变量局部的静态 inline是另一个问题-它取决于函数的作用域。.h中的内联函数用于全局使用和范围。.c中的内联函数仅供本地使用。这与#define 内联函数可以是外

当我用C编写软件时,我应该把
静态
内联
函数放在
.h
.C
文件中吗?

假设多个C源文件包括.h文件,那么.h文件中的内联函数是可以的,但我不确定你为什么希望.h文件中的静态函数最终被复制,每个C源文件一次。编译器可能足够聪明,不会为C源文件中未调用的静态函数生成代码。

不要将
静态
函数(或变量)的声明或定义放入
.h
文件中。这违背了保持函数/变量局部的
静态

inline
是另一个问题-它取决于函数的作用域。
.h
中的
内联
函数用于全局使用和范围。
.c
中的
内联
函数仅供本地使用。这与
#define


内联
函数可以是
外部
静态
或未指定。很好地解释了
内联
范围问题

它们的声明或定义?您不应该将
静态
函数放在
.h
文件中,因为如果需要,则函数不应该是静态的。如果您通常希望内联函数是静态的,则为True。至少我很少麻烦实例化外部内联定义