Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
次のコード行があります。
#define PORT 9987
と
char *ptr = (char *)&PORT;
これは私のサーバーコードで機能するようです。しかし、クライアントコードに書いたように、次のエラーメッセージが表示されます:
lvalue required as unary ‘&’ operand
私は何を間違っていますか?
ここでは C プリプロセッサが活躍しています。コードを前処理すると、次のようになります。
char *ptr = (char *)&9987;
( ) 演算子のアドレスは&、リテラルではなく変数に適用できます。
&
プリプロセッサ マクロにはメモリがなく、コンパイル時にマクロが値に置き換えられます。したがって、ここで実際に起こっていることはchar *ptr = (char *)&9987、これは不可能です。
char *ptr = (char *)&9987