功能原型设计的优点

pou*_*ler 3 c function-prototypes

经过半个小时的互联网研究,我找不到任何有关功能原型设计优势的合理讨论.

我在Java/Android中管理,并开始了C课程.与我之前的经验相比,原型设计看起来很麻烦,我想知道它为什么在2013年仍然存在的原因.

我知道里奇和好朋友的生活更加困难; 但是,今天可以编写一个编译器,它会在第一次传递中生成一个函数列表,然后使用该函数列表执行常规操作,因为当前编译器将使用头文件.

它可能不会仅仅因为向后兼容性而持久存在.创建一个可以在当前操作模式和我刚才描述的假设新模式之间切换的编译器是可行的,具体取决于它所显示的代码.

如果原型设计仍然存在,那么它必须对程序员有兴趣,而不是编译器程序员.我是对还是错 - 在哪里可以找到有关功能原型设计与无原型设计优势的合理讨论?

unw*_*ind 8

你忘记了在C中你可以调用你没有的源代码.

C支持代码的二进制分发,这对于(商业)库来说是很常见的.

您将获得一个标头,用于声明API(所有函数和数据类型)以及.lib(或您平台使用的任何文件)文件中的代码.对于所有C的标准库来说通常都是这种情况; 您并不总是将源代码提供给编译器供应商的库,但您当然仍必须能够调用这些函数.

为了实现这一点,C编译器在处理代码时必须具有声明,因此它可以为调用生成适当的参数,当然也可以正确处理任何返回值.

仅依靠你的来源是不够的,因为如果你这样做的话

GRAPHICSAPI_SetColorRGB(1, 1, 1);
Run Code Online (Sandbox Code Playgroud)

但实际的声明是:

void GRAPHICSAPI_SetColorRGB(double red, double green, double blue);
Run Code Online (Sandbox Code Playgroud)

如果没有原型,编译器不能神奇地将你的int参数转换为double.当然,拥有原型可以错误地检查调用是否有意义,这是非常有价值的.