Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.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编译_C - Fatal编程技术网

缺少函数定义的C编译

缺少函数定义的C编译,c,C,我一直在学习一些C教程,但有一点我不太清楚。一些示例显示了函数原型,但没有函数定义。教程说代码应该可以编译,即使它们不会运行 这是正确的吗?缺少函数定义的C程序是否可以编译?是的,这是正确的。正是这一特性使得将一个大程序拆分为多个源文件成为可能。是的,这是正确的。这是一种可以将一个大程序拆分为多个源文件的功能。源代码将仅使用声明编译,但如果调用了任何函数,则如果函数未在某处定义,则会发生链接器错误。源代码将仅使用声明编译,但是如果调用了任何函数,那么如果函数没有在某个地方定义,就会发生链接器错误

我一直在学习一些C教程,但有一点我不太清楚。一些示例显示了函数原型,但没有函数定义。教程说代码应该可以编译,即使它们不会运行


这是正确的吗?缺少函数定义的C程序是否可以编译?是的,这是正确的。正是这一特性使得将一个大程序拆分为多个源文件成为可能。

是的,这是正确的。这是一种可以将一个大程序拆分为多个源文件的功能。

源代码将仅使用声明编译,但如果调用了任何函数,则如果函数未在某处定义,则会发生链接器错误。

源代码将仅使用声明编译,但是如果调用了任何函数,那么如果函数没有在某个地方定义,就会发生链接器错误。

函数声明和函数定义之间有很大的区别。要使用函数,必须先声明函数,但只有在定义了所用函数后才能编译程序

C编译过程是一系列相互反馈的步骤。在典型的编译过程中,首先运行预处理器,然后编译器为每个源文件生成汇编语言,然后汇编程序将汇编语言转换为机器代码,然后链接器将所有必要的部分放在一起。除非您声明函数,否则编译器步骤通常不会完成,但编译器并不关心函数的实际实现位置—它只会生成汇编语言代码,其中包含可以放置对实际函数调用的孔。链接器用对实际函数的调用来填补这些漏洞


因此,您可以声明一个函数,但可以在另一个文件中定义它,这可能就是本教程所做的。但是,您仍然必须在某个地方定义函数,否则将无法获得完整的可执行二进制文件。

函数声明和函数定义之间有很大的区别。要使用函数,必须先声明函数,但只有在定义了所用函数后才能编译程序

C编译过程是一系列相互反馈的步骤。在典型的编译过程中,首先运行预处理器,然后编译器为每个源文件生成汇编语言,然后汇编程序将汇编语言转换为机器代码,然后链接器将所有必要的部分放在一起。除非您声明函数,否则编译器步骤通常不会完成,但编译器并不关心函数的实际实现位置—它只会生成汇编语言代码,其中包含可以放置对实际函数调用的孔。链接器用对实际函数的调用来填补这些漏洞


因此,您可以声明一个函数,但可以在另一个文件中定义它,这可能就是本教程所做的。但是,您仍然需要在某个地方定义函数,否则将无法获得完整的可执行二进制文件。

是的,有一种称为链接的方法。这是一个解析对不同符号(如变量、函数等)的引用的过程。即使编译器对函数的定义一无所知,也会感到高兴。但是,如果编译器知道函数的原型,它可以检查函数是否正确使用,以便尽早标记错误


有关链接的更多信息,请参阅或谷歌。

是的,有一种叫做链接的东西。这是一个解析对不同符号(如变量、函数等)的引用的过程。即使编译器对函数的定义一无所知,也会感到高兴。但是,如果编译器知道函数的原型,它可以检查函数是否正确使用,以便尽早标记错误

请参考或谷歌以了解更多有关链接的信息