问题:我有一个大型的Visual C++项目,我正在尝试迁移到Visual Studio 2010.它是各种来源和不同年龄段的大量组合.我遇到了问题,因为有些事情包括winsock.h和winsock2.h.
问题:显示#includeVisual Studio C++源文件的层次结构有哪些工具和技术?
我知道cl /P获取预处理器输出,但是没有清楚地显示哪个文件包含哪些其他文件(在这种情况下/P输出为376,932行8-)
在一个完美的世界中,我想要分层显示哪些文件包含哪些其他文件以及行号,以便我可以跳转到源代码:
source.cpp(1)
windows.h(100)
winsock.h
some_other_thing.h(1234)
winsock2.h
Run Code Online (Sandbox Code Playgroud) 由于某些原因,我们不应std::sort()在代码库中使用某些std函数(对于这些函数,我们有自己的实现)。
有没有一种方法可以防止调用这些函数,最好是在编译时引发一个错误?
我查看了重写的std函数,但它导致未定义的行为。
我的命令:
/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) 正如标题所示,我遇到了一个相当奇怪的问题.当我尝试编译示例源代码(使用libotb)时,我不断收到标题中的错误.奇怪的是,#include <iostream>在报告错误的所述源/头中存在.
另一方面,如果我从所述文件中提取代码并创建一个单独的源并使用g++ <source_file>它编译它,但如果我编译g++ -I<path_to_libotb_headers> <source_file>我得到相同的错误,虽然源文件不包含任何来自所述路径.
如下面的评论所述,这个问题很简单
#include <iostream>
int main
{
std::cerr << "Test";
return 0;
}
Run Code Online (Sandbox Code Playgroud)