问题描述
我已经准备好认输,只是将所有头文件和 cpp 文件集中在一个目录中,但我知道这有多疯狂。我已经尝试按名称列出每个单独的目录(删除 ${workspaceFolder}/**
)并将其替换为 ${workspaceFolder}/SomeDir1
一直到 SomeDirN
,但这并不重要。 工作区文件夹的子目录中的头文件无法看到工作区文件夹的其他子目录中属于不同分支的头文件。例如,如果我有:
${workspaceFolder}/main.cpp
${workspaceFolder}/DirA/a.h
${workspaceFolder}/DirB/b.h
和 b.h
包含 a.h
,我会得到包含错误。然而,main.cpp
可以毫无问题地包含 a.h
和 b.h
。 (还有 a.h
不能包含 b.h
)。奇怪的是,智能感知似乎看到它们,但不能包含它们。我试过在 b.h
内说 #include "../DirA/a.h"
但这也没有用。
当前c_cpp_properties.json
:
{
"configurations": [
{
"name": "Linux","includePath": [
"${workspaceFolder}/**","/usr/include/SDL2/"
],"defines": [],"compilerPath": "/usr/bin/g++","cStandard": "c11","cppStandard": "c++14","intelliSenseMode": "gcc-x64","forcedInclude": []
}
],"version": 4
}
当前的 tasks.json
(如果它是相关的。它只是略有修改):
{
"version": "2.0.0","tasks": [
{
"type": "cppbuild","label": "C/C++: g++ build active file","command": "/usr/bin/g++","args": [
"-g","-fpermissive","${fileDirname}/*/*.cpp","-o","${fileDirname}/${fileBasenameNoExtension}","-l","SDL2","SDL2main","-static-libgcc","-static-libstdc++"
],"options": {
"cwd": "/usr/bin"
},"problemMatcher": ["$gcc"],"group": {
"kind": "build","isDefault": true
},"detail": "compiler: /usr/bin/g++"
}
]
}
此外,当 main.cpp
包含任何子目录中的文件,或者这些子目录中的任何文件包含同一文件夹中的文件时,也不会弹出包含错误。
另外,请不要在我的 -fpermissive
标志上吹火焰,我正在学习在线教程来玩 SDL2,并且不得不设置它。我不高兴。我希望这不是一个重复的问题(我环顾四周很多)并且它足够详细和适当;这是我第一次真正询问这里的东西。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)