我一次又一次地读到你不能从一个函数(在C / C ++中)返回一个数组,但是如果是这样的话,怎么能从一个函数返回int64_t
? int64_t
只是long int
的数组吗?
(是的,我知道你可以返回指向数组开头的指针,但我说的是返回int[4]
,而不是int*
。)
答案 0 :(得分:1)
不是int64_t只是一个long int数组吗?
不,int64_t
是标量类型的别名(与数组类型之类的聚合类型相对),通常它是long long
类型的别名。
当然,当int64_t
定义为精确宽度整数类型在C中是可选的时,这适用。
答案 1 :(得分:0)
您实际上可以返回任何不是数组的类型 - 例如,如果您希望返回四个int值,则可以返回struct my_4ints { int x[4] };
但是int64_t(在32位机器上)是一个'项目'。它碰巧作为两个寄存器值返回,在x86上,通常是eax,edx。但那仍然是一个值。
答案 2 :(得分:0)
如果将数组包装在结构中,则可以从函数返回它。但是要避免这种情况,因为ABI在这些事情上并不完全稳定(例如:使用gcc 3.3编译的对象链接到Solaris上用gcc 3.4编译的对象是不兼容的,在这种情况下可能会崩溃)。