在C ++和C#中完成了我的大部分开发工作后,我发现在C中习惯用“ void”指定一个空参数列表有些特殊,但是在“可信赖的来源”中看到它使我认为它是必需的。问题是为什么?
为了弄清楚,例如在Visual Studio中,我不能对启用的C编译器开关和禁用的C ++编译器开关进行任何组合,在编写此代码时,得到的编译器警告甚至不多:
void foo_bar();
然后,是什么使它变得必要,而不是用此声明它:
void foo_bar(void);
难道只是C语言遗留的旧版本而C语言遗忘了吗?
在C语言中声明函数(实际上是任何符号)时,您需要以正确的顺序声明所有内容(在使用函数之前先声明一个函数),否则会出现有关未定义符号的错误。
函数的前向声明使您可以通过仅声明函数签名(不包括主体)来实现此目的。这使编译器可以识别函数名称(符号),并在以后对其进行完全定义之前使用它们。
使用前向声明导出库的公共可访问功能时(在公共头文件中),您将声明整个签名,以便库的用户将知道需要哪些参数。
当将前向声明用于内部使用时,您(有时)不需要声明函数的整个签名,仅返回类型和名称就足够了-没有参数。仅当最终定义函数时,才可以指定参数列表。
是的,它只是旧的C标准语言而已。因为相同的C标准语言表示空括号表示未知数量的参数(不一定为0)。
我前一段时间问过的这个问题试图(像您一样)理解用“数量未知的参数”声明函数的效用-显然是一种非常误解的方式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句