Требуется объявление c: Требуется «=» (объявление) — Visual Basic

c — Проблема с const: требуется константное выражение

Вопрос задан

Изменён 6 лет 9 месяцев назад

Просмотрен 2k раз

Я использую VS 2010 Express, настроил ее для работы с языком С.
Для примера простейшая программа. Я объявляю массив типа char. Хочу его размер задать через const. Но VS это объявление не видит. В чем может быть проблема? Вот пример:

const int SIZE = 26;
char alphabet[SIZE];

Пишет в ошибку, что требуется константное выражение.

  • c
  • visual-studio

на чистых сях делай так

#define SIZE 26

P.S. Изначально в сях не было const и inline, но вообще то потом (после срр) было добавлено (а так же объявление переменных в for и комментарии в стиле плюсов).

Почему у тебя не кушает их — хто знает P.P.S. Попробовал на VC на сях. Да, const кушает саму по себе, но в размерах массива не принимает. Да, #define лучшее лекарство.

8

Неплохо бы написать, что за ошибка у Вас.

Посмотрел у себя

#include <stdio.h>                                          
#include <stdlib.h>                                         
#include <string.h>
#include <windows.h>
#ifndef INTDEF
  const int SIZE = 26;
  char aa[SIZE];
#endif
main ()
{
#ifdef INTDEF
  const int SIZE = 26;
  char aa[SIZE];
#endif
  aa[1] = 'z';
}
c:/Documents and Settings/avp/src/hashcode $ gcc  t.c
t.c:7: error: 'SIZE' redeclared as different kind of symbol
c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/windef.h:328: error: previous declaration of 'SIZE' was here
t.c:8: error: variable-size type declared outside of any function
c:/Documents and Settings/avp/src/hashcode $ gcc  -DINTDEF t.
c c:/Documents and Settings/avp/src/hashcode $

Ругань очевидна.

4

Поддерживаю alexlz. Данный приём называется «трюк с перечислением» и обсуждается в книге «Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ», Правило 2: Предпочитайте const, enum и inline использованию #define.

Это получается, что данный компилятор поддерживает только чистый С90 ? Может, есть какие-то настройки, которые включают поддержку более поздних форматов? Если нет, то берите другой компилятор, например, gcc.

1

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Дважды два — Объявления

Главная