Как использовать стандарт C11 в Code::Blocks

Как гласит название, мне нужно сделать code::blocks работать с C11 и я не могу понять, как это сделать.

я пошел в settings => compiler settings => Other options и я добавил -std=c11 и попробовал также с -std=gnu11, оба не похоже на работу.

Я скомпилировал gcc-5.2 а затем я изменил компилятор по умолчанию (gcc-4.9) и до сих пор нет результата.


Когда я пытаюсь скомпилировать следующую программу:

#include<stdio.h>

int main(void){
    int arr[] = {0,1,2,3,4};

    for(int i=0;i<5;i++){
        printf("%d ",arr[i]);
    }

    return 0;
}

Я получаю следующее:

|6|error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode|

Но если я делаю это в терминале (Ubuntu 15.04, 64BIT, gcc-5.2):

./install/gcc-5.2.0/bin/gcc5.2 program.c -o program

Кажется, работает нормально.

У меня вопрос, как сделать code::blocks работать с c11?

6 ответов

Решение

Поскольку версии GCC 5.x работают с -std=gnu11 по умолчанию Code::Blocks должен что-то делать (например, передавать -ansi или же -std=gnu90) компилятору, чтобы он работал по-другому.

Изучите все параметры, которые отправляются компилятору. Найдите способ, чтобы Code::Blocks показывал вам точное заклинание, которое он использует при компиляции. Тогда решите, как это исправить.

Опции, которые используются:

-Wall -Wextra -Werror -Wstrict-prototypes -Wconversion -std=gnu11 \
-O0 -g -ansi `pkg-config --cflags gtk+-3.0`

-ansi наносит ущерб; это эквивалентно -std=c90 или возможно -std=gnu90 - это явно отменяет -std=c11 или же -std=gnu11,

Предполагая Codeblocks 13.12 для Windows, он поставляется с более старой версией GCC (4.7.1), которая не поддерживает C11.

  • Вручную загрузите последнюю версию компилятора Mingw 64 (я не думаю, что Mingw32 поддерживается для включения GCC-версий C11).
  • Установите это. Это будет в какой-то непонятной папке, как C:\Program Files\mingw-w64\x86_64-4.9.1-win32-seh-rt_v3-rev1\mingw64,
  • Добавьте указанный выше путь в Codeblocks, Настройки -> Компилятор -> вкладка Исполняемые файлы Toolchain -> Каталог установки компилятора. Нажмите кнопку "автоопределение".
  • На той же вкладке убедитесь, что компилятор C x86_64-w64-mingw32-gcc.exe (поскольку теперь у вас может быть несколько установок GCC на вашем компьютере), и программа make mingw32-make.exe,
  • Во вкладке "Настройки компилятора" щелкните правой кнопкой мыши список флагов компилятора и выберите "Новый флаг". Для типа name в C11, для флагов компилятора введите -std=c11, Нажмите "ОК" и проверьте новую опцию C11, которую вы только что создали.
  • Также, чтобы обеспечить соответствие C11, отметьте опцию "рассматривать ошибки как предупреждения, требуемые ISO C..." (-pedantic-errors). Проверьте опцию "Включить все общие предупреждения компилятора" (-Wall).

Я просто ученик (новичок - очень новый), но я надеюсь, что это может помочь (хотя ветка старая).

(код, видимый на изображении, является примером 12.2 - forc99.c от Stephen Prata C Primer Plus)

code_blocks_16.01

Я создал новый флаг

Настройки -> Компилятор -> (под общим) Щелкните правой кнопкой мыши на общем -> Новый флаг -> Введите детали с изображения -> ОК. После этого установите флажок только что созданного нового флага. (работал для меня)

[Если вы посмотрите на изображение, есть опция для -std = c99 (чуть выше той, которую я создал), вы можете использовать эту опцию для поддержки c99.]

(Кстати версия gcc для code::blocks 16.01 mingw 32bit, я использую это, 4.9.2)

Перейдите в Настройки-> Компилятор-> Флаги компилятора-> Общие-> установите флажок рядом с "Пусть g++ следует C++11 ISO".

Зайдите в Настройки -> Настройки компилятора

https://stackru.com/images/2d677f2dba8469e 1095d76cdcb4fc58cc118864d.png Убедитесь, что на левой вкладке выбраны глобальные настройки компилятора.

На правой вкладке нажмите на вкладку настроек компилятора. В разделе "Общие" установите флажок "Пусть gcc следует стандарту языка ISO C 1999 года [-std=c99]

Я также столкнулся с той же проблемой в моем проекте CodeBlock. Я использую версию CodeBlock Версия:17.12.

Я исправил следующие шаги:

  1. Перейдите в Настройки -> Вкладка Copmpiler.
  2. "Глобальные настройки компилятора": pop is openend.
  3. Проверьте выбранный компилятор: " GNU GCC Compiler"
  4. Выберите вкладку "Флаг компилятора".
  5. Установите следующие флажки:
    • Пусть g ++ соответствует стандарту языка C++11 ISO C++
    • GCC должен следовать стандарту ISO C 2011 года
  6. Сохраните настройки.
  7. Теперь я могу выполнить код C++ 11.

Надеюсь, это сработает и у вас, ребята.

Причина в том, что вы объявляете цикл i for. Попробуйте отделить его, как показано ниже:

#include<stdio.h>

    int main(void)

        {
            int arr[] = {0,1,2,3,4};
            int i;
            for(i=0;i<5;i++){
                printf("%d ",arr[i]);
            }

            return 0;
        }

Это будет работать. Удачного кодирования:)

Перейдите в "setting" -> "compiler", затем посмотрите опцию, следуя вкладке "C++11 ISO inc compiler".

введите описание изображения здесь

Другие вопросы по тегам