Стандартные правила компиляции GCC, отличающие распространение формы / версию от другой: структуры - PullRequest
0 голосов
/ 15 декабря 2010

Некоторое время назад я использовал Dev C ++ IDE, который работает под Windows и поставляется с MinGW (порт Windows GCC), теперь я перешел на MAC OS X Leopard и использую Code :: Blocks IDE с GCC v4.2 (Apple, модифицированная версия), которая поставляется с XCode 3.2.2. Я не знаю, зависит ли моя проблема от дистрибутива (Dev cpp) или релиза компилятора, или, возможно, от того, что это дистрибутив GCC от Apple, но я учел эту разницу в объявлении структурированных данных.

В старом Dev CPP, работающем под Windows, я просто исключил это

const int max = 1000;

struct data {

   char thing[max];
   int anotherthing;

}

Затем я использовал ссылку на эту функцию, как это:

void some_function (data what)


Это сработало хорошо. В Xcode-версии компилятора, использующего Code :: Blocks IDE, я получаю некоторые ошибки, и он не компилируется.

    new types may not be defined in a return type

ошибка: 'max' не было объявлено в этой области

Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 декабря 2010

Из фрагмента кода, который вы разместили, я не вижу в этом ничего плохого.Он должен компилироваться без ошибок, которые вы получаете.Что произойдет, если вы переместите max в область видимости main?Появляется ли эта ошибка для aArray?

Единственное, о чем я мог подумать, что это может повлиять на компиляцию, это переключение, переданное в gcc.Как выглядит команда, передаваемая C :: B при вызове gcc?

0 голосов
/ 18 декабря 2010

Я сделал комментарий с содержанием ошибки в правой строке, на который он ссылается.

include

с использованием пространства имен std;const int max = 1000;

typedef struct dato {

short pos;
char cont[max]; //error: 'max' was not declared in this scope

};

... Далее идет основная функция:

int main() {

char aArray[max]; //error: 'max' was not declared in this scope
int posz;

... продолжить с хорошим кодом

...