GCC标准编译规则将分发/版本形式不同于另一个:结构

时间:2010-12-15 07:54:12

标签: xcode gcc struct codeblocks

前段时间我使用的是在Windows下运行的Dev C ++ IDE,并附带MinGW(GCC的Windows端口),现在我转移到MAC OS X Leopard,我使用Code :: Blocks IDE和GCC v4.2 (Apple修改版),附带XCode 3.2.2。我不知道我的问题是否取决于发行版(Dev cpp)或编译器版本,或者可能是它是GCC的Apple发行版,但我在声明结构化数据时强调了这种差异。

在旧的开发CPP中,在Windows上运行我只是在暗示这个

const int max = 1000;

struct data {

   char thing[max];
   int anotherthing;

}

然后我使用它来引用它这样的函数:

void some_function(data something)


效果很好。在使用Code :: Blocks IDE的编译器的Xcode版本上,我得到一些错误,它将无法编译。

    new types may not be defined in a return type

错误:未在此范围内声明'max'

谢谢!

2 个答案:

答案 0 :(得分:0)

我在右边的行中提出了错误内容的评论。

包括

使用命名空间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;

...继续使用好的代码

答案 1 :(得分:0)

从您发布的代码段中,我发现它没有任何问题。它应该编译没有你得到的错误。如果将max移动到main的本地范围会发生什么? aArray的错误是否仍然存在?

我能想到的唯一可能影响编译的是传递给gcc的开关。当调用gcc时,C :: B传递的命令是什么样的?