Ошибка Cpp: ‘size’ не является членом ‘std’, хотя -std = c 1z в компиляторе

#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 и настройки отладки, и это решило эту проблему … и дало мне еще одну проблему с отладчиком 🙂 Поскольку это другая проблема, мне придется задать другой вопрос.