Я установил Clang версии 6.0, а также Visual Studio 2017. Я компилирую простое приложение "Hello World":
#include <iostream>
int main()
{
std::cout << "Hello, World!" << std::endl;
return 0;
}
с использованием
clang hello.cpp
Это дает мне предупреждения:
hello-d1b2c6.o : warning LNK4217: locally defined symbol __std_terminate
imported in function "int `public: static unsigned __int64 __cdecl
std::char_traits<char>::length(char const * const)'::`1'::dtor$2"
(?dtor$2@?0??length@?$char_traits@D@std@@SA_KQEBD@Z@4HA)
hello-d1b2c6.o : warning LNK4217: locally defined symbol _CxxThrowException
imported in function "public: void __cdecl std::ios_base::clear(int,bool)"
(?clear@ios_base@std@@QEAAXH_N@Z)
Мне известно, что я могу смягчить эти предупреждения, используя clang-cl
(как предложено в этом вопросе SO и здесь ), однако я не хочу делать это без полное понимание последствий.
Итак, вот мои актуальные вопросы:
- Что означают эти предупреждения или что их вызывает?
- Что меняет использование
clang-cl
и что я должен иметь в виду при его использовании? (Я думаю, что есть причина не использовать его все время)
- Существуют ли другие способы не получать эти предупреждения (кроме отключения предупреждений)?