gpt4 book ai didi

c++ - 关于静态函数不使用原型(prototype)的意见

转载 作者:太空宇宙 更新时间:2023-11-04 05:46:51 24 4
gpt4 key购买 nike

有没有人对不使用原型(prototype)有任何意见,除非对于声明为“静态”的函数是必要的。您是否总是将它们放在翻译单元的顶部?我倾向于但最近我一直在考虑为什么不依赖于函数的顺序并且你可以限制函数可以从哪里调用的一些范围,可能会迫使你自己多考虑一下范围功能。我仍然站在做原型(prototype)的一边,但我可以看到对于栅栏另一边的争论并非完全没有根据。我想这个论点也可以继续用于 #define 和文件范围变量。

最佳答案

我尽可能遵循“使用前定义”规则(因此我的文件总是从下往上读取)。这样我就不必担心保持声明和定义同步,至少在同一个文件中。

迂腐地说,您是在谈论声明,而不是原型(prototype);原型(prototype)是指声明/定义的语法(即在参数列表中声明参数的数量和类型)。明确地说,以下声明和定义使用原型(prototype)语法:

/**
* prototype declaration; the number and types of parameters are
* part of the declaration, so the compiler can do type checking
* on the function call
*/
double f(int x, int y, double z);
/**
* prototype definition
*/
double f(int x, int y, double z)
{
...
}

而下面的声明和定义使用原型(prototype)语法:

/**
* non-prototype declaration; the number and types of parameters
* are not specified, so the compiler can't do any type checking
* on the function call.
*/
double f();
...
/**
* non-prototype definition; this is still legal AFAIK, but
* *very* outdated, and should no longer be used
*/
double f(x, y, z)
int x;
int y;
double z;
{
...
}

无论您是在使用前定义函数,还是只是在使用前声明然后再定义,总是使用原型(prototype)语法。

关于c++ - 关于静态函数不使用原型(prototype)的意见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2141346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com