C ++ Cmath.h проблема, приводящая к тому, что переменные не находятся в глобальном пространстве имен - PullRequest
0 голосов
/ 20 января 2020

При запуске C ++ в visual studio я пытаюсь написать простую команду Hello World. Однако, когда я делаю, я продолжаю получать эту проблему.

1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\math.h(1,1): warning C4821: Unable to determine Unicode encoding type, please save the file with signature (BOM) 
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\cstdlib(24,18): error C2039: 'fabs': is not a member of '`global namespace'' 
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\cstdlib(24,22): error C3861: 'fabs': identifier not found 
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\cstdlib(28,18): error C2039: 'fabsf': is not a member of '`global namespace'' 
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\cstdlib(28,23): error C3861: 'fabsf': identifier not found 
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\cstdlib(32,18): error C2039: 'fabsl': is not a member of '`global namespace'' 
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\cstdlib(32,23): error C3861: 'fabsl': identifier not found 
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\cmath(26,47): warning C4244: 'argument': conversion from 'double' to 'int', possible loss of data 
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\cmath(30,18): error C2039: 'acosf': is not a member of '`global namespace'' 
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\cmath(30,23): error C3861: 'acosf': identifier not found 
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\cmath(34,18): error C2039: 'acoshf': is not a member of '`global namespace'' 
(etc)
#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
    return 0;
}

Кажется, проблема связана с файлом заголовка cmath в этих строках.

_NODISCARD _Check_return_ inline float acos(_In_ float _Xx) noexcept /* strengthened */ {
    return _CSTD acosf(_Xx);
}

_NODISCARD _Check_return_ inline float acosh(_In_ float _Xx) noexcept /* strengthened */ {
    return _CSTD acoshf(_Xx);
}

_NODISCARD _Check_return_ inline float asin(_In_ float _Xx) noexcept /* strengthened */ {
    return _CSTD asinf(_Xx);
}

Я должен отметить, что эти ошибки существуют для большей части файла заголовка cmath, а не только для тех, что показаны здесь, но я не думаю, что было бы полезно включать сотни ошибок.

Это как-то связано с зависимостями Visual Studio? Есть ли способ избежать этой ошибки?

Я работаю над чистой установкой Visual Studio.

1 Ответ

0 голосов
/ 20 января 2020

После небольшой боли я разобрался в проблеме. В основном мой файл math.h испортился и просто публиковал NULLS.

Я вошел в файл UCRT в наборах windows и скопировал файл math.h из предыдущего дистрибутива. Теперь все отлично работает.

Тот же трюк работает для перехода в свойства вашего проекта и изменения версии SDK на версию, отличную от текущей.

...