Ljil Asked:2020-10-23 02:44:30 +0000 UTC2020-10-23 02:44:30 +0000 UTC 2020-10-23 02:44:30 +0000 UTC 为什么将 (void) 放在 printf 和其他函数之前? 772 我正在使用存储库的示例学习 C:https ://github.com/ankushagarwal/nweb/blob/master/nweb23.c 问题是 - 为什么要放在其他功能(void)之前?printf (void)sprintf(...); c 1 个回答 Voted Best Answer AnT stands with Russia 2020-10-23T02:46:56Z2020-10-23T02:46:56Z 该函数printf不是void-function。它将一个类型的值返回给调用代码int。通过这种方式 - 通过将返回值转换为类型void- 代码的作者向编译器(和代码的读者)清楚地表明,函数的返回值printf被他故意忽略了。 某些函数忽略它们的返回值是正常的(例如,printf或strcpy)。对于其他函数,忽略它们的返回值通常表示代码中存在错误(例如,malloc或fopen)。许多编译器提供 [非标准] 工具来将函数标记为属于第一组或第二组。如果忽略第二组函数的返回值,那么编译器将发出 [非标准] 诊断消息。 然而,在一些开发组中有一种严厉的态度,即函数返回值永远不能简单地被隐式忽略(并且编译器被配置为在这种情况下无条件地发出诊断消息)。这是一个相当荒谬的要求,但它仍然存在。在这种情况下,为了摆脱诊断,开发人员必须以这种方式明确通知编译器该值被故意忽略。
该函数
printf不是void-function。它将一个类型的值返回给调用代码int。通过这种方式 - 通过将返回值转换为类型void- 代码的作者向编译器(和代码的读者)清楚地表明,函数的返回值printf被他故意忽略了。某些函数忽略它们的返回值是正常的(例如,
printf或strcpy)。对于其他函数,忽略它们的返回值通常表示代码中存在错误(例如,malloc或fopen)。许多编译器提供 [非标准] 工具来将函数标记为属于第一组或第二组。如果忽略第二组函数的返回值,那么编译器将发出 [非标准] 诊断消息。然而,在一些开发组中有一种严厉的态度,即函数返回值永远不能简单地被隐式忽略(并且编译器被配置为在这种情况下无条件地发出诊断消息)。这是一个相当荒谬的要求,但它仍然存在。在这种情况下,为了摆脱诊断,开发人员必须以这种方式明确通知编译器该值被故意忽略。