0

関数から (C/C++ で) 配列を返すことはできないと何度も読みましたが、その場合、int64_t関数からどのように返すことができますか? int64_tの配列だけではありませんlong intか?

(はい、配列の先頭へのポインターを返すことができることは知っていますが、 ではなく を返すことについて話しているのですint[4]int*)

4

3 に答える 3

1

int64_t は単なる long int の配列ではありませんか?

いいえ、int64_t(配列型のような集約型とは対照的に) スカラー型のエイリアスであり、通常はlong long型のエイリアスです。

もちろん、これはint64_t、正確な幅の整数型が C でオプションとして定義されている場合に適用されます。

于 2012-12-25T19:37:27.117 に答える
0

実際には、配列ではない任意の型を返すことができます。たとえば、4つのint値を返したい場合は、struct my_4ints { int x[4] };

ただし、int64_t(32ビットマシンの場合)は1つの「アイテム」です。x86では、通常はeax、edxの2つのレジスタ値として返されます。しかし、それでも1つの値が返されます。

于 2012-12-25T19:40:12.870 に答える
0

配列を構造体でラップすると、関数から返すことができます。ただし、ABIはこの種のものでは完全に安定していないため、回避する必要があります(例:Solarisでgcc3.4でコンパイルされたオブジェクトにリンクされたgcc3.3でコンパイルされたオブジェクトは互換性がなく、その場合はクラッシュする可能性があります)。

于 2012-12-25T19:41:06.013 に答える