Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.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 Unix环境中的高级编程第三版Edn和#xA7;7.8,未声明函数的默认返回值为int?_C_Function - Fatal编程技术网

C Unix环境中的高级编程第三版Edn和#xA7;7.8,未声明函数的默认返回值为int?

C Unix环境中的高级编程第三版Edn和#xA7;7.8,未声明函数的默认返回值为int?,c,function,C,Function,在第7.8节“内存分配”中,我了解到: 因为这三个alloc函数返回一个通用void*指针,如果我们#include(为了获得函数原型),当我们将这些函数返回的指针赋给不同类型的指针时,我们不必显式地强制转换它。未声明函数的默认返回值为int,因此在int类型的大小与函数返回值(本例中为指针)的大小不同的系统上,使用没有正确函数声明的强制转换可能会隐藏错误 我的问题是:我们可以使用未声明的函数吗?我认为我们不能,那么为什么“未声明函数的默认返回值是int”?我完全糊涂了…C89/C90不需要预先

在第7.8节“内存分配”中,我了解到:

因为这三个alloc函数返回一个通用void*指针,如果我们#include(为了获得函数原型),当我们将这些函数返回的指针赋给不同类型的指针时,我们不必显式地强制转换它。未声明函数的默认返回值为int,因此在int类型的大小与函数返回值(本例中为指针)的大小不同的系统上,使用没有正确函数声明的强制转换可能会隐藏错误


我的问题是:我们可以使用未声明的函数吗?我认为我们不能,那么为什么“未声明函数的默认返回值是int”?我完全糊涂了…

C89/C90不需要预先声明函数;C99和C11可以。这本书大概是在C99流行之前最后一次更新的

或者,自C99流行以来,本节并未更新——第三版似乎是在2013年出版的,这是在C99流行之后,尽管C11当时处于边缘状态。(我的第二个Edn是从2005年开始的,但是§7.8没有“未声明函数的默认返回值是
int
”这句话。因此,这可能是第三个Edn中的一个添加,在这种情况下,添加它的原因除了引起混淆外,还不太清楚。)

不管这本书的更新历史如何,C90在使用前不需要声明函数是准确的,并且假定这些未声明的函数返回
int
。自C99以来,严格遵守C标准要求在使用所有函数之前声明它们



摩托罗拉M680x0芯片上的一些系统中,函数在An(地址)寄存器中返回地址,但在Dn(数据)寄存器(通常为A0和D0)中返回数字。在这样的系统上,没有正确声明函数可能会导致代码在错误的寄存器中查找返回值。

C89/C90不要求预先声明函数;C99和C11可以。这本书大概是在C99流行之前最后一次更新的

或者,自C99流行以来,本节并未更新——第三版似乎是在2013年出版的,这是在C99流行之后,尽管C11当时处于边缘状态。(我的第二个Edn是从2005年开始的,但是§7.8没有“未声明函数的默认返回值是
int
”这句话。因此,这可能是第三个Edn中的一个添加,在这种情况下,添加它的原因除了引起混淆外,还不太清楚。)

不管这本书的更新历史如何,C90在使用前不需要声明函数是准确的,并且假定这些未声明的函数返回
int
。自C99以来,严格遵守C标准要求在使用所有函数之前声明它们



摩托罗拉M680x0芯片上的一些系统中,函数在An(地址)寄存器中返回地址,但在Dn(数据)寄存器(通常为A0和D0)中返回数字。在这样的系统上,没有正确声明函数可能会导致代码在错误的寄存器中查找返回值。

C89/C90不要求预先声明函数;C99和C11可以。这本书大概是在C99流行之前最后一次更新的。就是这样!为什么不发布你的答案,这样我就可以把它标记为最喜欢的呢?C89/C90不需要预先声明函数;C99和C11可以。这本书大概是在C99流行之前最后一次更新的。就是这样!你为什么不把你的答案贴出来,这样我就可以把它标记为最喜欢的?