我正在使用C语言并修改以前由其他人编写的代码。我正在努力处理一些事情,我尽可能地了解我所能做的事情。所以,正如我的问题所述,创建函数时static inline void
和void
之间有什么区别?我为这篇长文章事先道歉,但我想让你知道我做了一些研究,但不明白我发现了什么。静态内联void和void之间有什么区别?
我发现an explanation of static
是混淆了我:
static声明表示该功能不能被引用的其他文件 ;也就是说,链接器不会导出该名称。
通过阅读本文,我假设引用函数不同于调用函数?我假设因为这个函数是从另一个.c文件中调用的。如果是这样的话,什么是引用一个函数?
通过相同的网站,他们解释inline functions,我不明白这是什么意思。
__inline关键字告诉编译器用 内的代码替换每个函数调用实例的函数定义。 但是,替换只能由编译器自行决定。例如,对于 示例,如果编译器的地址是 ,或者它太大而不能内联,则编译器不会内联函数。
呃???
任何帮助非常感谢,我再次为这个非常长的帖子道歉。
位于file1.c中(使用通用名称,因为我不认为它很重要)以下
COMPLEX cNoiseSample;
CGauss(&cNoiseSample, loopbackRadio->pState);
位于file2.c中
static inline void CGauss(COMPLEX * pcGauss, P_OS_UNIFORM_RAND_STATE pState)
{
//code
}
另外,'inline'对于在包含在不同编译单元中的头文件中定义一个函数时强制执行一个定义规则是必要的(或者至少对于C++来说是这样,不完全知道C中的这个细节,I想象它会是一样的) – rubenvb
嗯,我想我比@ Graham-Borland有点困惑。让我告诉你为什么:COMPLEX cNoiseSample; CGauss(&cNoiseSample,loopbackRadio-> pState);/*这段代码在.c源文件中的一个点处调用,而在另一个.c源文件中调用。我有这个:*/static inline void CGauss(COMPLEX * pcGauss,P_OS_UNIFORM_RAND_STATE pState)/ *我为糟糕的格式化道歉在评论框中,不知道该怎么做。*/ – TZPike05
编辑你的问题,粘贴那里的代码片段。 –