如何尝试捕获像“#include”这样的预处理器指令

how to try and catch for preprocessor directives like "#include"

是否有尝试捕获#include 指令的方法 因为#include 是处理器指令并且 try catch 方法是在编译期间完成的,所以它不会工作,有什么解决方法吗? 我需要检查是否可以包含一个文件,否则包含另一个文件。

__has_include 函数以及使用 #if 和 #elif 就可以了。

#if defined __has_include
#  if __has_include (<stdatomic.h>)
#    include <stdatomic.h>
#  endif
#endif

来源:https://gcc.gnu.org/onlinedocs/cpp/_005f_005fhas_005finclude.html