В чем разница между дополнительными каталогами Include и дополнительными каталогами #using?

В настройках проекта Visual Studio (Visual C++) мы видим следующие настройки:

  • Дополнительные каталоги включения (переключатель компилятора /I[path])
  • Дополнительные каталоги #using (переключатель компилятора /AI[path])

Я хочу знать, когда правильно использовать эти настройки и каковы основные различия между этими настройками и как они влияют на визуальный компоновщик C++ и время сборки?

Пожалуйста, посмотрите здесь — Страница свойств Visual Studio


person Buddhika    schedule 03.05.2018    source источник


Ответы (1)


#using предназначен для C++/CLI, а не для стандартного C++.

Каталог для поиска для разрешения ссылок на файлы, переданных директиве #using.

assembly_A.cpp

// compile with: /clr /LD  
public ref class A {};  

assembly_B.cpp

// compile with: /clr /LD  
#using "assembly_A.dll"  
public ref class B {  
public:  
   void Test(A a) {}  
   void Test() {}  
};  

Параметр /AI[path] задает путь поиска, где находится Assembly_A.dll.

Дополнительная официальная информация: Свойство VCCLCompilerTool.AdditionalUsingDirectories

person S.M.    schedule 03.05.2018
comment
Спасибо, это означает, что #использование в основном полезно для C++/CLI, а не для собственных настроек проекта C++? Также извините, я не могу проголосовать за ваш ответ, так как у меня пока нет привилегий. - person Buddhika; 03.05.2018
comment
Да, вы абсолютно правы, в нативных настройках проекта C++ он бесполезен. - person S.M.; 03.05.2018
comment
Это не точно, директива #import также полагается на это. И найти метафайлы WinRT. Все проекты на чистом C++. - person Hans Passant; 03.05.2018
comment
@HansPassant docs.microsoft.com/en-us/ cpp/preprocessor/ не указывает /AI, только /I в Порядке поиска имени файла - person S.M.; 03.05.2018