Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/26: Рейтинг темы: голосов - 26, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 20
1

Ошибка "variable-size type declared outside of any function"

12.01.2010, 19:02. Показов 4907. Ответов 43
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
#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
как исправить?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2010, 19:02
Ответы с готовыми решениями:

Ошибка "data out1" is inferred as a variable size matrix, while its properties in the model Explorer specify its size...
Здравствуйте. Нужно реализовать простую обработку данных, но я новичок в симулинк, поэтому...

Ошибка при компиляции 'Type-declaration character does not match declared data type.'
Не могу понять почему на строке sInfo = Left$(sInfo, iPos - 1) при попытке компиляции выдается...

Список с дробями: Variable or field 'input' declared void 'pd' was not declared in this scope
почему не нравится 1ая функция? #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; struct rational_fraction...

Ошибка: cannot initialize a variable of type 'LightsState' with an rvalue of type 'void'
Прошу подскажите как понять эту ошибку: main.cpp:20: error: cannot initialize a variable of type...

Ошибка variable or fields 'OutVivod' declared void
Ошибка в строке 10: variable or fields 'OutVivod' declared void. 37:...

43
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
12.01.2010, 19:11 2
error C2057: expected constant expression
C++
1
void vvod(int N,int A[N],int I);
этот error касается второго параметра (массива)
0
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 20
12.01.2010, 19:13  [ТС] 3
а как записать его?
0
Быдлокодер
512 / 298 / 85
Регистрация: 22.11.2009
Сообщений: 892
12.01.2010, 19:16 4
Объявление массива тут же не может происходить, елки палки!
Убирай int N а в начале пиши #define N 255 (или еще чего)
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
12.01.2010, 19:18 5
Цитата Сообщение от Darky Посмотреть сообщение
Объявление массива тут же не может происходить,
что понимается под объявлением?

это компилится на ура:
C++
1
void fcn(int arr[100]);
0
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 20
12.01.2010, 19:22  [ТС] 6
#define N 255 зачем она? что эта запись делает
0
Быдлокодер
512 / 298 / 85
Регистрация: 22.11.2009
Сообщений: 892
12.01.2010, 19:25 7
zim22, Дык сразу понятно, что такое скомпилится на ура.
C++
1
void fcn(int arr[100]);
Тут размерность массива сразу указана, а тут
C++
1
void vvod(int N,int A[N],int I);
Задается переменная, и эта переменная сразу выступает в кач-ве размерности массива.


Andrew->, Это чтобы не заниматься ерундой и объявить константу N для задания размерности
0
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 20
12.01.2010, 19:32  [ТС] 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;
?
0
Быдлокодер
512 / 298 / 85
Регистрация: 22.11.2009
Сообщений: 892
12.01.2010, 19:33 9
Andrew->, Надо просто не задавать размерность массива в этой же функции.
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
12.01.2010, 20:25 10
Цитата Сообщение от Darky Посмотреть сообщение
а тут
C++
1
void vvod(int N,int A[N],int I);
Цитата Сообщение от Darky Посмотреть сообщение
Задается переменная, и эта переменная сразу выступает в кач-ве размерности массива.
и почему же эта переменная не может выступать в качестве размерности массива?
***
извини, если тебе кажется, что я придираюсь - это не так. мне действительно интересно.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12460 / 7484 / 1754
Регистрация: 25.07.2009
Сообщений: 13,763
12.01.2010, 20:50 11
Цитата Сообщение от Andrew-> Посмотреть сообщение
int N,K,M;
Переменная, объявленная вне какой-либо функции считается статической. А статические переменные нельзя объявлять без инициализации. Перенесите их внутрь main(), там каким-либо образом инициализируйте, а потом уже в функцию в качестве параметров передавайте.
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
12.01.2010, 21:13 12
Цитата Сообщение от easybudda Посмотреть сообщение
Переменная, объявленная вне какой-либо функции считается статической.
нет. она считается переменной с external linkage. (глобальной переменной)
но НИКАК не статической
0
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
12.01.2010, 21:20 13
zim22, потому что нельзя использовать переменные при задании размера массива. Константы можно, переменные - нет.
Попробуй объявить N как константу и сам все увидишь.
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
12.01.2010, 21:24 14
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
потому что нельзя использовать переменные при задании размера массива. Константы можно, переменные - нет.
Попробуй объявить N как константу и сам все увидишь.
ок. объявил N как константу
C++
1
void vvod(const int N,int A[N],int I);
та же самая ошибка. error C2057: expected constant expression

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

http://codepad.org/KZgYGrIx
0
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
12.01.2010, 21:58 19
Я вообще слабо себе представляю зачем указывать размер массива?
C++
1
void vvod(int N,int A[],int I);
или
C++
1
void vvod(int N,int* A,int I);
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
12.01.2010, 22:05 20
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Я вообще слабо себе представляю зачем указывать размер массива?
в случае одномерных массивов - размер указывать не нужно. всё-равно компилятор игнорирует его.
в случае же многомерных массивов - нужно указывать вторую и более размерность (по крайней мере у меня без указания размерности не получалось откомпилить код)
C++
1
2
3
4
5
6
7
int array[3][10];
void vvod(int x[][10]) { }
 
int main() 
{
  vvod(array);
}
0
12.01.2010, 22:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2010, 22:05
Помогаю со студенческими работами здесь

Ошибка "Type-declaration character does not match declared data type"
Снова я. Запускаю программу, а у меня выскакивает &quot;Type-declaration character does not match...

Ошибка "Type-declaration character does not match declared data type"
Запускаю программу, а у меня выскакивает &quot;Type-declaration character does not match declared data...

Возникает ошибка Error 1 A local variable named 'c' cannot be declared in this scope because it would give a different m
using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Ошибка Error 1 A local variable named 'i' cannot be declared in this scope because it would give a different meaning to
using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Ошибка type declaration character does not match declared data
Sub zad5() Dim S, C, N As Double N = 0 Do N = N + 1 C = N^(2) / 5 S = S + C Loop While C &lt;...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru