私の質問はこれだけです:「複雑な浮動小数点」と「浮動小数点の複合」の両方が有効ですか?
"float complex"と "float complex"はどちらも有効ですか?
の両方がgccので警告なしに受け入れられているように見えます。
私の質問はこれだけです:「複雑な浮動小数点」と「浮動小数点の複合」の両方が有効ですか?
"float complex"と "float complex"はどちらも有効ですか?
の両方がgccので警告なしに受け入れられているように見えます。
complex
は、型指定_Complex
に展開のcomplex.hからマクロあります。これは、他のすべての型指定子と同様に動作します。たとえば、int, bool, double
です。同じ「グループ」に属するすべての型指定子について、それらをさまざまな順序で組み合わせることができます。少なくとも一つの型指定が宣言に与えなければならない
各構造体宣言の 各宣言で指定子、および指定子修飾子リストと:これはC11 6.7.2、強調鉱山で指定されタイプ名。型指定 の各リストは、次のマルチセット( 項目ごとに複数の多重集合がある場合、カンマで区切られた)のいずれかでなければなりません。 型指定は、おそらく他の宣言 指定子と混合、任意の順序に 起こり得ます。
はその後、我々は中に指定子の任意の順列を意味
float _Complex
double _Complex
を見つけ型指定の有効なグループのリストを、次の同じグループは大丈夫です。
unsigned long long x;
long unsigned long y;
long long unsigned z;
0123:
別の例を取るためには、グループ
unsigned long long
、または以下の可能な組み合わせ私たちを与えるunsigned long long int
にあり
または
unsigned long long int a;
unsigned long int long b;
unsigned int long long c;
int unsigned long long d;
long unsigned long int e;
long long unsigned int f;
long long int unsigned g;
long unsigned int long h;
...
これらすべて同じものを意味します。
はい。一般的には、宣言の冒頭に "typey言葉" の順序は重要ではありません:
static const unsigned long int x = 42;
が
long const int unsigned static x = 42;
リファレンスと同じである:C99、6.7.2/2
[...]型指定は任意の順序で発生することがあり、おそらく 他の宣言指定子と混在。
(float
と_Complex
両方が型指定されている。)
N1570は次のように述べています* "宣言の中の宣言の先頭にある以外のストレージクラス指定子の宣言は宣言で廃止されました" *ので、先頭以外のところで 'static'を使うのは悪い考えです。 – user694733
@ user694733しかし、これはストレージクラス指定子にのみ適用されます。 'static long const int _Atomic long volatile unsigned * const volatile * _Atomic * const x;'のようなコードは、C言語ではまったく問題ありません。 – Lundin
'int long unsigned long'が有効なので、両方の注文が有効であることが理にかなっています。私は正式にチェックしていない。 –
http://port70.net/~nsz/c/c11/n1570.html#7.3.1p4:*マクロ 'complex'が' _Complexに展開; 'マクロ _'Complex_I'は、に展開します'const float _Complex'型の定数式は、虚数単位の値を持ちます。だから、「フロート」はちょうどここで冗長です。 –
@ EugeneSh. gcc複合体を使用すると、それ自体がデフォルトで2重複合体になります。 – eleanora