为啥不包含头文件却可以调用函数,谁来解释

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥不包含头文件却可以调用函数,谁来解释相关的知识,希望对你有一定的参考价值。

我做了一个服务器程序,处理不同消息的函数分别写在多个文件里,我写了一个头文件定义了一些宏和结构体,没有函数声明,我在运行主程序却可以调用各个函数,后来修改中把一个函数的名字改了,就出现编译报错未定义该函数,谁来解释下怎么回事?
编译写在makefile里

旧的C语言中,函数原型声明不是必需的。
对于没有声明的函数,被认为是返回int类型
参考技术A 这个编译没报错,估计是你那个函数没有使用到!没有使用到则不会去连接 参考技术B 在头文件里声明一下新的函数名试试吧追问

我想知道之前的不声明为什么都能用,那个函数名我改回去了还是可以用

追答

或许是Makefile 里写了依赖关系什么的吧。。。

追问

你的意思是只要Makefile里有依赖就可以不写头文件包含,可以直接调用了?

追答

不知道。。。试试呗。。。

VS2017 包含了文件路径却还是找不到头文件(无法打开源文件“***.h”)

问题

最近在学习plog日志技术时,发现即使包含了头文件所在的路径,却还是无法引用头文件,一直报错如下截图:

再看看我是已经包含了头文件所在路径了的:

VC++目录 - 包含目录

C/C++ - 常规 - 附加包含目录

头文件所在

可以看出,确实是已经包含进来了的,但就是没法在代码中使用…


解决问题

如果是上述情况,那么很有可能是属性中设置的“配置”和“平台”,跟VS主界面设置的“解决方案”和“解决方案平台”不一致导致的。

如下图:

将他们设置为一样就可以了:

到此,问题完美解决!

以上是关于为啥不包含头文件却可以调用函数,谁来解释的主要内容,如果未能解决你的问题,请参考以下文章

为啥我可以在 C 中调用一个函数而不声明它,但在 C++ 中却不能?

一个c语言工程中可以有几个头文件,两个文件间函数调用其中之一要是头文件吗?

为啥js代码写在HTML文件里可以运行,写在js文件里被html文件调用之后却报错?

C++程序在使用GDAL时为啥必须包含头文件:gdal_priv.h?gdal_priv.h包含的是啥文件?

在C语言中开始不写头文件算不算错,好像不写程序也能运行

java中 调用native方法,生成头文件时,为啥不正确?