标签: include-path

不同包含路径中的相等头文件

假设我们有两个头文件:/directory1/A.hppdirectory2/A.hpp.这两个标题的内容是不同的!

我们的构建目标A.cpp需要directory1directory2包含路径,因为两个目录中还有其他所需的头文件.

现在,A.cpp有一个#include "A.hpp"声明.

A.hpp预处理器选择哪个版本?

如果一个人使用第三方软件,那么这种情况可能会发生吗?

c++ header-files include-path

5
推荐指数
2
解决办法
469
查看次数

即使使用-std = c ++ 11 macOSX,C++也找不到正则表达式

所以我试图在我的Mac上使用家里的c ++ 2011正则表达式.我正在使用Eclipse进行编码,稍微涉及到终端的编译.

当我尝试编译代码时会发生这种情况:

$ c++ -std=c++11 -o a *.cpp
scanner.cpp:11:10: fatal error: 'regex' file not found
#include <regex>  // to use this need to use -std=c++11 flag in compiler
         ^
1 error generated.
Run Code Online (Sandbox Code Playgroud)

如果我使用-std = c ++ 11标志,则会发生这种情况.

这是我的c ++ -v:

$ c++ -v
Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.4.0
Thread model: posix
Run Code Online (Sandbox Code Playgroud)

现在我在我的计算机上找到了我希望在"usr/lib/c ++/v1/regex"项目中包含的文件.但这不是eclipse中的include文件,我不知道如何让我的编译器找到它.

如何才能将其添加到包含路径中,如果这是我需要做的工作呢?

更新:

试着

$ c++ -I/usr/lib/c++/v1 -o a *.cpp
Run Code Online (Sandbox Code Playgroud)

这会导致错误

Undefined symbols for architecture x86_64:
Run Code Online (Sandbox Code Playgroud)

跟着似乎是我的代码中每一行的引用,例如

  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> …
Run Code Online (Sandbox Code Playgroud)

c++ regex include-path

5
推荐指数
1
解决办法
2605
查看次数

clang 的 include 优先级发生了什么?

我的命令:

/usr/bin/c++ -fPIC -I/Users/me/project/include -I/usr/local/include/opencv \
-I/usr/local/include -I/opt/local/include -std=c++11 -O3 -M -c \
/Users/me/project/src/program.cpp | grep opencv
Run Code Online (Sandbox Code Playgroud)

program.cpp有:

#include "opencv2/core/core.hpp"
#include "opencv2/ml/ml.hpp"
Run Code Online (Sandbox Code Playgroud)

输出:

  /opt/local/include/opencv2/core/core.hpp \
  /opt/local/include/opencv2/core/types_c.h /usr/include/assert.h \
  /usr/include/math.h /opt/local/include/opencv2/core/version.hpp \
  /opt/local/include/opencv2/core/operations.hpp \
  /opt/local/include/opencv2/core/mat.hpp \
  /opt/local/include/opencv2/objdetect/objdetect.hpp \
  /opt/local/include/opencv2/ml/ml.hpp \
Run Code Online (Sandbox Code Playgroud)

然而,存在:/usr/local/include/opencv2/core/core.hpp、 和/usr/local/include/opencv2/ml/ml.hpp

使用该-v标志, clang 告诉我:

ignoring duplicate directory "/usr/local/include"
  as it is a non-system directory that duplicates a system directory
#include "..." search starts here:
#include <...> search starts here:
 /Users/me/project/include
 /usr/local/include/opencv
 /opt/local/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1 …
Run Code Online (Sandbox Code Playgroud)

clang include-path

5
推荐指数
1
解决办法
6133
查看次数

GCC 找不到头文件

使用嵌入式 C 项目。有库,包含文件等 - 用于微控制器。我不需要为主机和操作系统(Linux Mint 64 位)使用 GCC。按照惯例...

但是现在我正在尝试从 Github编译mspdebug项目——当然是使用 GCC。我在 make 一开始就收到一个错误:

mspdebug$ make
cc  -DUSE_READLINE  -O1 -Wall -Wno-char-subscripts -ggdb -I. -Isimio -Iformats -Itransport -Idrivers -Iutil -Iui -DLIB_DIR=\"/usr/local/lib/\"  -o util/btree.o -c util/btree.c
util/btree.c:19:20: fatal error: assert.h: No such file or directory
 #include <assert.h>
                    ^
compilation terminated.
Run Code Online (Sandbox Code Playgroud)

我在所有可能的路径中搜索包含(我通过 gcc -v 命令获得了它们的列表) - 没有 assert.h 文件,以及 stdio.h 等等。除了虚拟框目录只有一个地方(GCC 不搜索包含的地方):/usr/lib/syslinux/com32/include

AFAIK,所有标准库和包含都与 GCC 一起安装。所以我尝试重新安装 GCC (4.8.4) - 没有任何变化。

为 GCC 提供所需的所有标准环境的正常方法是什么?

linux gcc include-path c-standard-library

5
推荐指数
1
解决办法
1万
查看次数

如何在 VSCode 上调试 C++ 代码?苹果系统

我已经下载了 C++ 扩展,这是我的 launch.json 文件。 在此处输入图片说明

我需要做什么来调试它?我一直有这个错误。 在此处输入图片说明

是否可以在 MacOS 上调试 C++ 代码?我应该先添加/下载/创建什么?

更新: 这是我根据下面的答案所做的,我得到了这个 在此处输入图片说明

c++ debugging macos include-path visual-studio-code

5
推荐指数
1
解决办法
6733
查看次数

cpplint.py &amp; cmake:如何指定包含文件

假设我有一个目录结构如下的项目:

myproject
??? .git [...]
??? CMakeLists.txt
??? src
    ??? CMakeLists.txt
    ??? foo.cc
    ??? foo.h
Run Code Online (Sandbox Code Playgroud)

如果在src/foo.cc我包含头文件#include "foo.h",然后在其上运行 Google 的cpplint.py,它会抱怨

src/foo.cc:8:  Include the directory when naming .h files  [build/include] [4]
Run Code Online (Sandbox Code Playgroud)

所以我把它作为#include "./foo.h". 现在我收到另一个投诉:

src/foo.cc:8:  src/foo.cc should include its header file src/foo.h  [build/include] [5]
Run Code Online (Sandbox Code Playgroud)

但是,如果我将它包含为#include "src/foo.h",编译器将找不到它,因为我当前的 CMake 设置。这是我的两个 CMakeLists.txt 文件的样子:

CMakeLists.txt:

project(myproject)
add_subdirectory(src)
Run Code Online (Sandbox Code Playgroud)

源代码/CMakeLists.txt:

set(SRCS foo.cc)
add_executable(foo ${SRCS})
Run Code Online (Sandbox Code Playgroud)

我使用 CMake 的方式在某种程度上从根本上是错误的吗?我应该src/CMakeLists.txt完全删除文件,并使用CMakeLists.txt完整路径指定基础中的所有源文件吗?

或者我应该简单地忽略 cpplint 的抱怨,因为它们并不真正适合 CMake 项目的设置方式?

c++ cmake include-path cpplint

5
推荐指数
1
解决办法
4828
查看次数

“然后在报价目录中”是什么意思?

在C 预处理器版本 10.0.1的第 8 页中,我们有以下声明:

\n\n
\n

#include "file"

\n\n

此变体用于您自己的程序的头文件。file它首先在包含当前文件的目录中搜索名为的文件,然后在引用目录中搜索,然后在用于<file>. 您可以使用该选项将目录添加到\n 引用目录列表中\xe2\x80\x98-iquote\xe2\x80\x99

\n
\n\n

“然后在报价目录中”是什么意思?

\n

c c++ include-path

5
推荐指数
1
解决办法
450
查看次数

#include &lt;stdio.h&gt; 问题(Visual Studio Code)

我正在尝试用 C 做一个项目,但我的字符串有问题#include<stdio.h>,我尝试了几个教程,但没有一个起作用,我的代码:


#include <stdio.h>

int main () {

     int age;
     printf ("Enter age:");
     scanf ("% d", age);
     printf ("age is% d", age);
     return 0;

}

Run Code Online (Sandbox Code Playgroud)

问题有2:

遇到#include 错误。更新包含路径。

无法打开源文件错误代码“stdio.h”。

对于这个项目,我创建了一个文件夹,其中有一个名为 .dist 的文件夹和我的 Main.c 文件

(为了更清楚我附上了图片)

在此输入图像描述

谁能告诉我如何解决这个问题?

c include include-path visual-studio-code

5
推荐指数
1
解决办法
6万
查看次数

gcc包括订单破损?

我遇到了一个奇怪的问题,linux c ++编译器包含来自本地目录而不是系统目录的文件.请参阅带有(-H)选项的预编译器输出.可以看出系统文件/usr/include/sched.h突然包含来自本地目录的time.h头而不是系统一.我假设如果包含文件在<>括号内,系统目录应首先查找,

来自sched.h的相关行是: -

#include <time.h>
Run Code Online (Sandbox Code Playgroud)

带(-H)选项的编译器输出: -

..... /usr/include/c++/4.6/bits/basic_string.h
...... /usr/include/c++/4.6/ext/atomicity.h
....... /usr/include/c++/4.6/i686-linux-gnu/./bits/gthr.h
........ /usr/include/c++/4.6/i686-linux-gnu/./bits/gthr-default.h
......... /usr/include/pthread.h
.......... /usr/include/sched.h
........... /usr/lib/gcc/i686-linux-gnu/4.6.1/include/stddef.h
........... /home/borisu/ivrworx-lnx/src/iw_core/../kentcsp/src/time.h <<<< WHY ???
Run Code Online (Sandbox Code Playgroud)

编译器目录搜索

$ gcc -xc++ -E -v -
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.6.1/lto-wrapper
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.1-9ubuntu3' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++,go --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu …
Run Code Online (Sandbox Code Playgroud)

c++ linux gcc include-path

4
推荐指数
1
解决办法
4816
查看次数

如何在JSP中导入CSS文件?

<%String path = application.getRealPath("/");%>
<%@page import="index.css" %>
Run Code Online (Sandbox Code Playgroud)

我正在使用上面的String路径来获取我的目录的真实路径.我想从css文件夹导入index.css.

在JSP中是否可以执行类似的操作<%@page import = path+"css/index.css"%>或者是否有更简单的方法来执行此操作?

jsp include include-path

4
推荐指数
1
解决办法
6万
查看次数