Форум программистов, компьютерный форум CyberForum.ru

ошибка variable-size type declared outside of any function - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.96
Andrew->
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 20
12.01.2010, 19:02     ошибка variable-size type declared outside of any function #1
#include <iostream>
using namespace std;
int N,K,M;
void vvod(int N,int A[N],int I);

void proverka(int J,int M,int A1[M]);

void vivod(int I1,int K,int A2[K]);

int main()

Добавлено через 36 секунд
variable-size type declared outside of any function
как исправить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
12.01.2010, 19:11     ошибка variable-size type declared outside of any function #2
error C2057: expected constant expression
C++
1
void vvod(int N,int A[N],int I);
этот error касается второго параметра (массива)
Andrew->
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 20
12.01.2010, 19:13  [ТС]     ошибка variable-size type declared outside of any function #3
а как записать его?
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
12.01.2010, 19:16     ошибка variable-size type declared outside of any function #4
Объявление массива тут же не может происходить, елки палки!
Убирай int N а в начале пиши #define N 255 (или еще чего)
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
12.01.2010, 19:18     ошибка variable-size type declared outside of any function #5
Цитата Сообщение от Darky Посмотреть сообщение
Объявление массива тут же не может происходить,
что понимается под объявлением?

это компилится на ура:
C++
1
void fcn(int arr[100]);
Andrew->
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 20
12.01.2010, 19:22  [ТС]     ошибка variable-size type declared outside of any function #6
#define N 255 зачем она? что эта запись делает
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
12.01.2010, 19:25     ошибка variable-size type declared outside of any function #7
zim22, Дык сразу понятно, что такое скомпилится на ура.
C++
1
void fcn(int arr[100]);
Тут размерность массива сразу указана, а тут
C++
1
void vvod(int N,int A[N],int I);
Задается переменная, и эта переменная сразу выступает в кач-ве размерности массива.


Andrew->, Это чтобы не заниматься ерундой и объявить константу N для задания размерности
Andrew->
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 20
12.01.2010, 19:32  [ТС]     ошибка variable-size type declared outside of any function #8
Цитата Сообщение от Darky Посмотреть сообщение
zim22, Дык сразу понятно, что такое скомпилится на ура.
C++
1
void fcn(int arr[100]);
Тут размерность массива сразу указана, а тут
C++
1
void vvod(int N,int A[N],int I);
Задается переменная, и эта переменная сразу выступает в кач-ве размерности массива.


Andrew->, Это чтобы не заниматься ерундой и объявить константу N для задания размерности
надо просто
int N;
?
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
12.01.2010, 19:33     ошибка variable-size type declared outside of any function #9
Andrew->, Надо просто не задавать размерность массива в этой же функции.
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
12.01.2010, 20:25     ошибка variable-size type declared outside of any function #10
Цитата Сообщение от Darky Посмотреть сообщение
а тут
C++
1
void vvod(int N,int A[N],int I);
Цитата Сообщение от Darky Посмотреть сообщение
Задается переменная, и эта переменная сразу выступает в кач-ве размерности массива.
и почему же эта переменная не может выступать в качестве размерности массива?
***
извини, если тебе кажется, что я придираюсь - это не так. мне действительно интересно.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
12.01.2010, 20:50     ошибка variable-size type declared outside of any function #11
Цитата Сообщение от Andrew-> Посмотреть сообщение
int N,K,M;
Переменная, объявленная вне какой-либо функции считается статической. А статические переменные нельзя объявлять без инициализации. Перенесите их внутрь main(), там каким-либо образом инициализируйте, а потом уже в функцию в качестве параметров передавайте.
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
12.01.2010, 21:13     ошибка variable-size type declared outside of any function #12
Цитата Сообщение от easybudda Посмотреть сообщение
Переменная, объявленная вне какой-либо функции считается статической.
нет. она считается переменной с external linkage. (глобальной переменной)
но НИКАК не статической
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
12.01.2010, 21:20     ошибка variable-size type declared outside of any function #13
zim22, потому что нельзя использовать переменные при задании размера массива. Константы можно, переменные - нет.
Попробуй объявить N как константу и сам все увидишь.
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
12.01.2010, 21:24     ошибка variable-size type declared outside of any function #14
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
потому что нельзя использовать переменные при задании размера массива. Константы можно, переменные - нет.
Попробуй объявить N как константу и сам все увидишь.
ок. объявил N как константу
C++
1
void vvod(const int N,int A[N],int I);
та же самая ошибка. error C2057: expected constant expression

в чём проблема? я ведь константу объявил, как ты и говорил...
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
12.01.2010, 21:29     ошибка variable-size type declared outside of any function #15
zim22, код с объявлением покажи.
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
12.01.2010, 21:42     ошибка variable-size type declared outside of any function #16
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
код с объявлением покажи.
это он и есть
C++
1
2
void vvod(const int N,int A[N],int I);
int main() {}
компилятор: msvc 2008
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
12.01.2010, 21:48     ошибка variable-size type declared outside of any function #17
C++
1
2
const int N = 10;
void vvod(int n,int A[N],int I);
Так попробуй.
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
12.01.2010, 21:54     ошибка variable-size type declared outside of any function #18
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Так попробуй.
так работает, я знаю.
***
gcc оказался более умным, чем msvc
gcc: error: 'N' was not declared in this scope

http://codepad.org/KZgYGrIx
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
12.01.2010, 21:58     ошибка variable-size type declared outside of any function #19
Я вообще слабо себе представляю зачем указывать размер массива?
C++
1
void vvod(int N,int A[],int I);
или
C++
1
void vvod(int N,int* A,int I);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2010, 22:05     ошибка variable-size type declared outside of any function
Еще ссылки по теме:

C++ Ошибка error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead
C++ Ошибка при работе с файлами: C4996: 'fopen': This function or variable may be unsafe
C++ Ошибка: 'strcpy': This function or variable may be unsafe

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
12.01.2010, 22:05     ошибка variable-size type declared outside of any function #20
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Я вообще слабо себе представляю зачем указывать размер массива?
в случае одномерных массивов - размер указывать не нужно. всё-равно компилятор игнорирует его.
в случае же многомерных массивов - нужно указывать вторую и более размерность (по крайней мере у меня без указания размерности не получалось откомпилить код)
C++
1
2
3
4
5
6
7
int array[3][10];
void vvod(int x[][10]) { }
 
int main() 
{
  vvod(array);
}
Yandex
Объявления
12.01.2010, 22:05     ошибка variable-size type declared outside of any function
Ответ Создать тему
Опции темы

Текущее время: 22:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru