私はループのために私を投げた構造体初期化コードを昨日見つけました。ここでは例があります:あなたが見ることができるようにラベルを使用したC構造体の初期化。それは動作しますが、どうですか?
-> testFunc
test.first=1 test.second=2
、構造体が正しく初期化される:(私には)驚くべきことに
typedef struct { int first; int second; } TEST_STRUCT;
void testFunc() {
TEST_STRUCT test = {
second: 2,
first: 1
};
printf("test.first=%d test.second=%d\n", test.first, test.second);
}
、ここでは出力です。私はそのようなラベルを付けられたステートメントを使用することはできないことを認識していませ私は構造体の初期化を行ういくつかの他の方法を見てきましたが、私はオンラインCのFAQのいずれかでこの種の構造体初期化の例は見つかりませんでした。誰がどのように/なぜこの作品を知っていますか?
優秀でC++について何も言われません@Andrew –
@AndrewCottrell、この "fieldname:"構文は私にとっては自然な(そして望ましい)、なぜそれが時代遅れと見なされるべきなのか考えていますか? – rick
@rick "fieldname:"構文はgcc拡張であり、決してISO C標準には含まれていません。 – sigjuice