函数隐式声明只报个警告,是不是就代表编译器可以自己找到那个函数啊?
所以编译器有自己查找相关头文件的能力啊? 函数隐式声明只报个警告,并不代表编译器可以自己找到那个函数。 在C语言中,如果函数在调用前没有声明,编译器会自动按照隐式声明的规则,为调用函数的C代码产生汇编代码。 其实隐式声明的函数默认返回类型为int,并且不接受任何参数(或者接受任意数量的参数,但这并不符合严格的C语言规范)。 当编译器遇到隐式声明的函数时,它会发出警告,提示程序员该函数没有被显式声明。 一般来说,这个警告的目的是提醒程序员注意潜在的问题,而不是表示编译器已经找到了该函数的定义。 在链接阶段,编译器会尝试找到所有被调用的函数的定义。如果某个函数只是被隐式声明而没有在链接库中找到对应的定义,链接器会报错,提示找不到该函数的定义。 即使链接器没有报错(比如因为隐式声明的函数恰好与某个库函数名称相同,但参数或返回类型不匹配),程序在运行时也可能出现错误。这是因为编译器生成的调用代码可能与实际的函数定义不匹配 在调用函数之前显式声明该函数。这通常是通过包含包含该函数声明的头文件来实现的。 确保链接器能够找到所有被调用的函数的定义。这可能需要将包含这些函数定义的源文件编译为对象文件,并将它们链接到最终的可执行文件中。好像不是编译器有搜查的能力吧,可能是有关键词导致的
页:
[1]