Apache Webサーバー用のモジュールを構築する際に、とapr_array_header_t
という宣言のように、構造体の宣言ではconst char*
というメンバーが必要であると言われていますが、mod_security、新しいap_parse_form_data
関数でさえ、void *
データ型がこれらの構造体に挿入されていることを示しています。私はset C構造体のオーバーライドがどのように可能であるかを理解したいと思いますか?
私は同じ方法を使用しようとすると、これはどうやって可能ですか、なぜ私のVisual Studioコンパイラは文句を言いますか?
この例の良い例は、void *
をrequest_rec
というメモに保存するcreate_request関数を使用したmod_securityです。
それは私のコンパイラですか?同じ正確なコードを使用してプロセスを見つけようとしたとき、コンパイラは私が使用していた関数の定義が受け入れられたapr_table_t *、const char *、const char *だけであることを激しく批判しました。私はWindows上でコードをコンパイルしようとはしませんでしたが、何度もLinux上でコードを実行しました。 –
@AlexErwin:発生しているエラーと一緒に、実際のコードを投稿できますか? –
コードが豊富なので、私はここでそれを行う方法がわかりません。しかし、apr_table_t構造体のスニペット 'struct apr_table_entry_t { char * key; char * val; apr_uint32_t key_checksum;私は現時点でエラーを複製する立場にはいませんが、この関数を実行すると、(APR_DECLARE(void)apr_table_set(apr_table_t * t、const char * key、 const char * val); void *とタイプされた変数は、コンパイラが気を失い、私がそれを行うことができないと言っています。私はC++コンパイラを使用しているからでしょうか? –