私のコードには警告があり、避ける方法はわかりません。ここでは、コードスニペットが署名済み:gccの最適化 "バグ"
#include <arpa/inet.h>
int main(void) {
uint16_t portnbr=0;
uint16_t n_portnbr = htons(portnbr);
return n_portnbr;
}
あるコンパイラ:
/usr/bin/g++ -Wconversion -Wall -O2 a.cpp
出力:
a.cpp:4: warning: conversion to 'short unsigned int' from 'int' may alter its value
警告を回避することが可能ですか? CFLAGSを変更するオプションがありません。
私のコンパイラはgccのバージョン4.3.4 [GCC-4_3-分岐リビジョン152973](SUSE Linux)の
gcc 4.1.2または4.7では警告が表示されません。少なくとも、行4( 'n_portnbr'の宣言)では使用しないでください。 'htons()'は 'short unsigned int'と思われる' uint16_t'を返し、その結果を 'uint16_t'オブジェクトに代入しています。 '#include'はあなたに 'htons()'の適切な宣言を与えるべきです。 'return'ステートメント*は問題になる可能性がありますが、私はそのことについて警告を出すことはありません - 明らかにどちらもあなたには当てはまりません。 * exact *コードをコピー&ペーストしましたか? –
あなたのシステムで 'htons()'はどのように宣言されていますか? –
extern uint16_t htons(uint16_t __hostshort) – cateof