C++ try 语句不适用于“#include”

C++ try statement won't work with "#include"

我的 Dlib 安装在多个地方,所以我正在编写一个脚本,它将在多个位置搜索我需要的文件进行编译:

int main()
{
    try{
        #include <dlib/image_processing/frontal_face_detector.h>
        #include <dlib/image_io.h>
    }catch(...){
        cout << "Location A is incorrect: " << e << endl;
    }


    try{
        #include <dlib/dlib/image_processing/frontal_face_detector.h>
        #include <dlib/dlib/image_io.h>
    }catch(...){
        cout << "Location B is incorrect: " << e << endl;
    }



    return 0;
}

但出于某种原因,g++ 仍然给我相同的 No such file... 错误:

g++ IWillFindLib--00.cpp -o IWillFindLib--00.o
IWillFindLib--00.cpp:8:59: fatal error: dlib/image_processing/frontal_face_detector.h: No such file or directory
   #include <dlib/image_processing/frontal_face_detector.h>
                                                       ^
compilation terminated.

现在,我知道我可以使用 g++ -I home/name/dlib 添加位置,但我希望完成的项目 运行 完全不干涉,无需用户输入。我怎样才能使这项工作?

错了。 try catch 发生在 运行 时间。 #include 在编译时发生(很早)。 #include 发生在您甚至还没有真正拥有 C 或 C++ 编译器之前——那时它只是一个相当简单的文本处理器。

C++17 有 __has_include 可以满足您的需求 - 但您可能没有 C++17 编译器。

看到这个答案: