为什么inline 函数定义在头文件.h中

一、是不是Inline函数只能定义在.h中?

答案:不是。你可以在A.c 和 B.c里重复定义一个inline void func()函数给A.c和B.c用。

二、为什么inline函数只能定义在.h中?

答案:因为可以解决所用调用inline函数的所有.c文件反复定义该inline函数,inline函数具有局部可见性。编译器不会生成inline函数的链接符号,inline函数只会直接替换代码(类似与宏)。

The definition of an inline function doesn't have to be in a header file but, because of the one definition rule (ODR) for inline functions, an identical definition for the function must exist in every translation unit that uses it.

相反,如果非inline函数定义在.h中。如果该.h被多个.c文件包含时,编译器会报重复定义。

如果非inline函数,是在.h中声明,在.c中定义。

而inline函数在.h中定义。

参考:

[Solved]-Why are C++ inline functions in the header?-C++

Why are C++ inline functions in the header? - Stack Overflow

重新认识C++的inline关键字 - 知乎

为什么在 C++ 中 inline 函数要在头文件中定义_inline函数定义在头文件__Nino的博客-CSDN博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: C语言没有内置的max函数,需要自己编写。如果你想使用max函数,可以在头文件声明一个函数原型,例如: ```c int max(int a, int b); ``` 然后在程序实现这个函数即可。 ### 回答2: 在C语言,可以通过自定义一个max()函数来获取两个数的最大值。为了在多个C文件使用max()函数,并确保函数的参数和返回值类型的正确性,我们可以通过创建头文件来实现。 一个C语言头文件通常以".h"为后缀名,文件名可以根据实际需要进行命名,例如"max.h"。在该头文件,我们应该包含函数的原型声明和可能需要的其他依赖项。 下面是一个可能的max头文件示例: #ifndef MAX_H #define MAX_H // 函数原型声明 int max(int num1, int num2); #endif 在这个示例,首先使用条件编译指令#ifndef和#define来防止头文件的重复包含。然后,我们声明了一个名为max的函数,该函数接受两个int类型的参数,并返回一个int类型的值。 通过将这个头文件包含在需要使用max函数的C文件,我们就可以在程序调用max函数,而无需在每个文件重新编写函数原型。 例如,如果我们有一个名为"main.c"的文件,需要使用max函数,我们可以这样包含头文件: #include "max.h" int main() { int a = 5; int b = 10; int max_value = max(a, b); // 输出最大值 printf("最大值为:%d\n", max_value); return 0; } 通过包含"max.h",我们可以在"main.c"文件使用max函数,而无需再次声明函数原型。这样就实现了在多个C文件共享max函数的目的。 当然,在实际应用头文件可能包含更多内容,例如宏定义、结构体声明或其他函数原型等。这个示例只是一个简单的max函数头文件的示例。 ### 回答3: C语言的max函数头文件通常为#include <stdio.h>。 max函数是一种用于求两个数的较大值的函数。它的定义可以在函数头文件声明,以便在其它源代码文件引用该函数定义函数头文件一般包含函数的声明和相关的宏定义。对于max函数,可以将其声明为一个内联函数或宏定义。 内联函数的声明可以使用关键字inline来实现,例如: ```c inline int max(int a, int b) { return (a > b) ? a : b; } ``` 这种方式会将函数的代码直接嵌入到调用它的位置,提高程序的执行效率。 另一种方式是使用宏定义: ```c #define max(a, b) ((a) > (b) ? (a) : (b)) ``` 这种方式会在编译时将宏定义的内容替换到相应的位置,实现相同的功能。 在使用max函数时,只需在源代码文件包含该函数头文件,即可调用该函数,例如: ```c #include <stdio.h> int main() { int a = 10; int b = 20; int result = max(a, b); printf("The maximum number is %d\n", result); return 0; } ``` 在以上的代码,我们引用了<stdio.h>头文件用于使用printf函数,并通过#include指令引入max函数头文件,然后调用max函数来求a和b的较大值,并使用printf函数打印结果。 总之,C语言的max函数头文件包含max函数的声明和宏定义的方式,以便在其它源代码文件引用该函数定义

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值