#define в определении массива
#define ArrSize 100
..
double ArrName_1 [ArrSize]
выдает ошибку :(
+ в цикле этот же ArrSize попытался использовать как
for (i = 0; i < ArrSize; ++i) { ... }
тоже ошибка :(
Так нельзя делать?
+ Как можно в С (и можно ли) задать массив с константным числом элементов (используя заданную раньше константу)?
Спасибо за ответы.
Не пробовал ставить точку с запятной после опредления массива?
Добрых суток. А у меня работает. 1) где ты прописал define? 2)какую ошибку? 3) В С можно использовать константу заданную раньше. Попробуй объявить ее в heder файле (в .h) твоего исходника там где объявляются у тебя include, т.е. после них. И тогда должно все заработать.
Только header-ы тут не при чем.
Абсолютно согласен, но может быть так будет меньше путаницы, в итоге.
#include <stdio.h>
#include <stdlib.h>
#define arrsize 10;
int main(int argc, char* argv[])
{
int i;
double Vec[arrsize];
for (i = 0; i < arrsize; ++i)
{
Vec = i;
}
return 0;
}
вот ошибки (если убрать arrsize или из массива или из цикла их соответственно меньше):
Compiling...
test.c
C:\Program Files\Microsoft Visual Studio\MyProjects\test\test.c(9) : error C2143: syntax error : missing ']' before ';'
C:\Program Files\Microsoft Visual Studio\MyProjects\test\test.c(9) : error C2143: syntax error : missing ';' before ']'
C:\Program Files\Microsoft Visual Studio\MyProjects\test\test.c(10) : error C2143: syntax error : missing ')' before ';'
C:\Program Files\Microsoft Visual Studio\MyProjects\test\test.c(10) : error C2059: syntax error : ')'
C:\Program Files\Microsoft Visual Studio\MyProjects\test\test.c(11) : error C2143: syntax error : missing ';' before '{'
Error executing cl.exe.
test.obj - 5 error(s), 0 warning(s)
Кто-нибудь знает в чем проблема?
Учись читать сообщения об ошибках.
Ещё почитай что-нибудь по С/С++ для начинающих, конкретно, про макросы.
#define arrsize 10; - здесь точка с запятой не нужна.
А вообще, в подобных случаях лучше использовать константы, а не макросы.
(
2 Green: О которой компилятор молчит)
):
- ипользованна точа с запятой после дерективы препроцессора;
И наведение результат работы препроцессора, который ничего не знаеть о синтаксисе С => если есть возможность избегай использования препроцессора, т.е. в данном случае лучше определить констану -
Код:
const int arrsize = 10;
p/s/ Константы лучше выделять прописными(чтобы видно было константа) так:
Код:
const int ARRSIZE = 10;
2 Green: О которой компилятор молчит)
[/QUOTE]
[QUOTE='Green']
Учись читать сообщения об ошибках.
[/QUOTE]
Ок, заменяю "читать" на "анализировать":
Учись анализировать сообщения об ошибках.
...по тому что написал компилятор сложно было как-то логически понять в чём ошибка :)
Мне программу надо на чистом С написать без использования С++, а в С вроде бы константу только через #define можно определить, насколько я знаю (не ошибаюсь ? :))
Чистый С - С совместимый с С++, ты имеешь в виду наверное Стандартный С, а в нем уже в стандарте С89 было введено ключевое слово const .