【发布时间】:2012-04-25 14:41:16
【问题描述】:
我的代码有一个警告,我不知道如何避免它。这是一个代码sn-p
#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-branch revision 152973] (SUSE Linux)
【问题讨论】:
-
我在 gcc 4.1.2 或 4.7 中没有收到该警告——你不应该,至少在第 4 行(
n_portnbr的声明)。htons()返回一个uint16_t,很可能是short unsigned int,并且您将该结果分配给uint16_t对象。#include <arpa/inet.h>应该给你正确的htons()声明。return声明可能是个问题,但我没有收到警告——显然你也没有。您是否复制并粘贴了您的准确代码? -
如何在您的系统上声明
htons()? -
外部 uint16_t htons (uint16_t __hostshort)
标签: c++ linux gcc compiler-construction warnings