объявление целочисленного массива в цели c без NSArray.n - PullRequest
2 голосов
/ 28 сентября 2010

(Вопрос обновлен после первого комментария)

int max_size = 20;<br> int h[max_size];

При отладке max_size для инициализации выдается значение [-1];

Если вместоЯ инициализирую с помощью целого числа.Итак, код: int h[20], работает нормально.

Это было с GCC 4.2 в Mac OS X 10.6.

Ответы [ 2 ]

2 голосов
/ 28 сентября 2010

Я только что скомпилировал и запустил следующую программу, включающую ваш код:

#import <Foundation/Foundation.h>

int main() {
    int max_size = 20;
    int h[max_size];

    h[0] = 5;
    NSLog(@"It is %d", h[0]);

    return 0;
}

Он работал нормально.Проблема заключается не только в объявлении массива.

Это было с GCC 4.0.1 на Mac OS X 10.4.

0 голосов
/ 28 сентября 2010

Если я правильно помню, некоторые компиляторы должны знать размер выделенных в стеке массивов явно во время компиляции. В этом случае (возможно) вы можете сделать вашу переменную max_size const или макрос #define (или целочисленный литерал, как вы уже сделали). В качестве альтернативы, вы можете динамически распределять массив, и тогда размер может быть любым старым. переменная

например:

int *array = calloc(max_size, sizeof(int));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...