C++ (g++) としてもコンパイルする必要がある C (特に gcc を対象とする) で記述されたコードがいくつかあります。処理が困難な構造に出くわしました。
基本的に定数のアドレスを取る多くの場所で使用されるマクロがいくつかありますが、それらは非定数でも機能します。コンストラクトは次のようになります。
int *iptr = (&(int){5});
これが本質的に可能にするのは、定数を指定することです。次に、その定数へのポインターを、int ポインターを必要とする関数で使用するために取得できますが、定数のみが指定されます。実際の一時配列を構築するために、中括弧内に複数の値を指定することもできます。そして、それはうまく機能します。
問題は、g++ がこれをまったく好まず、スローすることです。
error: non-lvalue in unary `&'
更新:次のようなことを行うことで、C++ で定数のアドレスを取得できるようです。
const int & ref = 5;
それが、私が取ろうとしている方向の出発点です。