Параметр /X
не отключает поиск файлов в локальном каталоге (при условии, что вы включаете их как "this.h"
, а не <this.h>
). Вы можете легко проверить это, создав файл
#include "foo.h"
int main() {}
создание пустого foo.h
и компиляция с использованием флага /X
.
Для Q2 мой тест с VC2010 показал, что он ведет себя так же, как и VC2008. То, что я сделал, было главным:
#include "inc1.h"
int main() {}
с папкой inc, которая содержала inc1.h, который просто
#include "inc2.h"
с двумя разными inc2.h
файлами; в inc
и один в каталоге с моим исходным файлом. Один в моем исходном каталоге был пустым, а в inc
была директива #error
. В общем, вы не хотите на это полагаться. И в стандартах C, и в C ++ на #include
просто говорится, что «указанный исходный файл ищется в соответствии с реализацией».