Visual Studio 2013 と C++ コンパイラを使用して、さらに別のリンク リストを記述し、試行錯誤によってこれに遭遇しました。これは Visual C++ 固有のものですか、それとも標準の一部ですか?
私はこの構文がとても好きです。とてもきれいです。リンクされたリスト lib を作成したことがある場合は、気が付く前にポインターを追いかけて、脳が結び目を作ることができます。ただし、この構文は非常に明確です。
静的な初期化子の値を持つこのようなものがたくさんありますが、関数の引数を初期化子として使用していますか? それはまだ見ていません。
GCC C/C++ コンパイラが期待どおりの結果を生成するかどうかを知っておくと安心できます。誰?
typedef struct link_in_list {
struct link_in_list *next;
int32_t key;
int32_t value;
} LINK, *pLINK;
// ----------------------------------------------------------------------------
pLINK prepend_list(pLINK head, int32_t key, int32_t value)
{
if (NULL == head) {
// initialize with a constant, variable, and expression
return new LINK{ NULL, key, (key * key) };
} else {
// initialize with stack variables
return new LINK{ head, key, value };
}
}