aix C++代码 移植到 linux的问题

发布于 2022-10-02 13:23:37 字数 1253 浏览 39 评论 0

向大家请教一个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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

于我来说 2022-10-09 13:23:37

g++和GCC对语法的定义不太一样。G++应该市强制按照C++语法处理。熟悉编译器的朋友来讲一下吧。

那些过往 2022-10-09 13:23:37

int fun(int (*rec)[]);
这句有问题吧,不能定义一个没有确定大小的类型。C++中有这样的规定的。C++对这种检查是严格的。建议看看STL方面的说明。
我水平也不是太高,说错请见谅。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文