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.
関数を使用してサーバーを記述しますchar* inet_ntoa(struct in_addr in),。ヘッダー <sys/socket.h>とをインクルードすると<netinet/in.h>、実行可能バイナリはコンパイラの警告と共に生成されますが、プログラムが からの戻り文字列を処理するときにセグメント違反が発生しinet_ntoaます。しかし、ヘッダーを追加すると、<arpa/inet.h>,すべて問題ないようです。
char* inet_ntoa(struct in_addr in),
<sys/socket.h>
<netinet/in.h>
inet_ntoa
<arpa/inet.h>,
どうしたの?
arpa/inet.hの宣言が含まれていchar* inet_ntoa(struct in_addr in)ます。このヘッダーを含めない場合、コンパイラーは暗黙の宣言を使用しますint inet_ntoa()。間違った宣言は、特にシステムを使用している場合、セグメンテーション違反につながる可能性がありsizeof(int)!=sizeof(void*)ます。
arpa/inet.h
char* inet_ntoa(struct in_addr in)
int inet_ntoa()
sizeof(int)!=sizeof(void*)
使用している場合は、フラグgccを追加できます。明示的な宣言なしで関数を使用することについて警告します。-Wallgcc
gcc
-Wall