[包含它的文件不在根项目文件夹中时,如何包含头文件?

问题描述 投票:0回答:1

我正在尝试学习如何更好地组织项目及其C ++文件。

我的简单测试项目似乎仅在main.cpp(和main.exe)位于根项目文件夹中时才起作用。这是我想尝试设置的方法。

  • 项目
    • 。vscode
      • c_cpp_properties.json
    • 标题
      • header.h
    • 主要
      • main.cpp
      • main.exe

在main.cpp里面,我有#include "headers/header.h"

[当我尝试使用此设置进行编译时,出现此错误fatal error: headers/header.h: No such file or directory

[我想知道为什么以下设置(在子文件夹中没有main.cpp的情况下)编译并运行得很好(不更改任何代码),为什么这不起作用?

  • 项目
    • 。vscode
      • c_cpp_properties.json
    • 标题
      • header.h
    • main.cpp
    • main.exe

我正在将Visual Studio Code与C / C ++和C / C ++编译运行扩展一起使用(如果相关)。>>

编辑:

将其更改为"../headers/header.h"确实可以,但是我想知道如何不使用../来做到这一点。

如果我理解正确,我只需要在c_cpp_properties.json中的includePath中添加一些内容。这是"includePath"部分现在的样子。

"includePath": [
    "${workspaceFolder}/**"
],

所以我想我只需要把它做成类似

"includePath": [
    "${workspaceFolder}/**",
    "..."
],

我应该在...部分中放什么?

我正在尝试学习如何更好地组织项目及其C ++文件。仅当main.cpp(和main.exe)位于根项目文件夹中时,我的简单测试项目才似乎起作用。这就是我的方式...

c++ include
1个回答
0
投票

编译特定文件时,编译器将查看此文件的路径。因此,在您的第一个示例中,它是.../Project/main/main.cpp,但是在您的第二个示例中,它是../Project/main.cpp。因此,现在显而易见,为什么查看headers/header.h的路径在第二种情况下有效,但在第一种情况下无效。

© www.soinside.com 2019 - 2024. All rights reserved.