为什么vscode自己编写的头文件找得到但是里面的函数用不了,该怎么办_(:з)∠)_

去掉注释后就显示undefined

说明头文件找到了,但是对应的源文件没加到project里面来
于是没编译这个文件
在链接阶段报错
找到这个源文件,加到项目里面就好了追问

我都放在一起了,try.c是主执行文件,sgets的源文件和头

文件都放在一起了,这个在dev上是可以的,不知道vs里面为什么不可以

追答

可是看你之前发的截图 并没有sgets.c的编译过程

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-07-15

没有编译你的sget.c文件

task,.json

这个我的的task.json,我的是c++的工程,修改编译参数

"args": [

                "-g",

                // "${file}",

                "*.cpp",

                "-o",

                "${fileDirname}/${fileBasenameNoExtension}.exe"

            ],

之前的编译是:“${file}”,改成“*.cpp”编译所有的cpp文件就好了

第2个回答  2019-07-16
可以发一下头文件内容吗?追问

发了鸭

追答

sgets函数的函数体你写在哪了,为什么不跟着声明写?

追问

那你看看我上面的追问,项目不是一般都这样吗,怎么才能实现我在dev里面的正常运行呢?😶

追答

问题在于,你把sgets函数写在了哪里,include指令只是把两个文件合并成一个而并不是逐个编译,比如:(第一张图)

我是害怕你写成了这样:(第二张图)

后果是sgets.h里只有一个sgets的声明而没有内容,只有file1里才有“真正的sgets”

而file2里只有一个空空的声明。

PS:一般项目是这么写的:

头文件1:

(利用宏定义和条件编译确保只编译一次)

函数声明部分

包含头文件2

头文件2:

(利用宏定义和条件编译确保只编译一次)

包含头文件1

函数体部分

.c或.cpp文件:

包含头文件1

使用函数

比如你可以瞅瞅stdio库就明白了

本回答被提问者采纳
相似回答