aix C++代码 移植到 linux的问题
向大家请教一个aix C++代码 移植到 linux的问题
aix如下代码(原来是C++代码,我从中提出一小部分),XlC编译运行正常
/* temp.c */
#include <stdio.h>;
int fun(int (*rec)[]);
int main()
{
int a[10];
fun(&a);
return 0;
}
int fun(int (*rec)[])
{
(*rec)[0]=1;
(*rec)[1]=2;
return 0;
}
在linux下 g++ 编译: g++ temp.c
出错:
temp.c:3: parameter `rec' includes pointer to array of unknown bound `int[]'
temp.c: In function `int main()':
temp.c:8: cannot convert `int (*)[10]' to `int (*)[]' for argument `1' to `int
fun(int (*)[])'
temp.c: At global scope:
temp.c:13: parameter `rec' includes pointer to array of unknown bound `int[]'
但是 gcc 编译: gcc temp.c成功
g++ -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/u
sr/share/info --enable-shared --enable-threads=posix --disable-checking --with-s
ystem-zlib --enable-__cxa_atexit --host=i386-redhat-linux
Thread model: posix
gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
因为是移植,不想改动代码,想在编译选项上做点文章
困惑中。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
g++和GCC对语法的定义不太一样。G++应该市强制按照C++语法处理。熟悉编译器的朋友来讲一下吧。
int fun(int (*rec)[]);
这句有问题吧,不能定义一个没有确定大小的类型。C++中有这样的规定的。C++对这种检查是严格的。建议看看STL方面的说明。
我水平也不是太高,说错请见谅。