C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C对象的顺序是否重要?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
C对象在文件中出现的顺序是否重要?

例如,在函数中,如果我创建两个函数,而上面的函数引用另一个函数,它会起作用吗? (是的,我已经尝试过了.)
对静态函数,INLINE函数等有效吗?
结构有效吗?如果我引用在.c文件中进一步定义的结构,会发生什么?

这是编译器特定的任何扩展吗?在这种情况下,编译器如何工作?它首先扫描整个文件的所有声明/定义,然后尝试取消引用函数/符号吗?

解决方法

首先,如果“如果我创建了两个函数而上面的那个函数引用了另一个函数,它会起作用吗?”你的意思是这样的:

int foo()
{
    return bar();
}

int bar()
{
    return 0;
}

然后编译器可以对bar()进行有根据的猜测,但如果bar()尚未声明,它至少会发出警告.对于无法调用的符号(如变量或类型),如果在声明它们之前使用它们,那将是一个彻头彻尾的错误.

在C中,无论何时使用标识符(并且无论标识符的类型如何:它可能是函数,变量,类型等),都应该事先声明它.您可以添加到任何标识符的各种修饰符(如您所说,静态,内联和所有其他标识符)对此没有影响.

不要混淆声明和定义.声明只是告诉编译器存在名称;一个定义实际上告诉编译器它是什么.

例如,这是一个定义:

int bar() { return 4; }

注意它有一个主体,里面有(简单的)代码.

这是匹配声明:

int bar();

一旦看到声明或其定义,编译器就会很乐意接受函数的使用.出于组织原因和更好的灵活性,通常最好在C文件的顶部(或包含的头文件中)编写所有函数的声明,然后编写定义.

所以,我的第一个例子应该是这样的:

int foo();
int bar();

int foo()
{
    return bar();
}

int bar()
{
    return 0;
}

通过C代码上方的声明,我可以以任何我喜欢的方式更改函数的顺序.

大佬总结

以上是大佬教程为你收集整理的C对象的顺序是否重要?全部内容,希望文章能够帮你解决C对象的顺序是否重要?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: