#c #arrays #c 17 #size #std
#c #массивы #c 17 #размер #std
Вопрос:
Недавно я перевел свой компилятор на C 17 и смог использовать новую функциональность, такую как std::array, просто отлично, но я получаю сообщение об ошибке при попытке использовать std::size (array). Любая информация будет оценена. Спасибо!
Вот тестовый файл:
#include <iostream>
#include <array>
#include <iterator>
int main()
{
std::array<int, 3> arr = {1, 2, 3};
int j = std::size(arr);
for(int i = 0; i < j; i )
{
std::cout << arr.at(i);
}
return 0;
}
и вот журнал сборки:
-------------- Build: Debug in Tests (compiler: GNU GCC Compiler)---------------
mingw32-g .exe -Wall -g -std=c 1z -c C:DevTestsMain.cpp -o objDebugMain.o
mingw32-g .exe -o binDebugTests.exe objDebugMain.o
C:DevTestsMain.cpp: In function 'int main()':
C:DevTestsMain.cpp:9:13: error: 'size' is not a member of 'std'
int j = std::size(arr);
^
Я пытался проверить наличие других ошибок компилятора, но я этого не вижу.
Комментарии:
1. Вы пробовали
-std=c 17
флаг вместо этого?2. @MarshallClow Я зашел в папку CodeBlocks bin и проверил gcc —version . В нем говорится, что gcc (tdm-1) 5.1.0
3. Ваш компилятор может частично поддерживать C 17, что означает, что он поддерживает некоторые функции, но не все.
4. Эта страница en.cppreference.com/w/cpp/compiler_support мне очень помогает в решении таких проблем.
5. @Ranoiaetep Я загрузил обновленный GCC и обновил свой компилятор IDE и настройки отладки, и это решило эту проблему … и дало мне еще одну проблему с отладчиком 🙂 Поскольку это другая проблема, мне придется задать другой вопрос.