我想转换一个自定义的字符常量(在头文件中使用#define
)持有一个端口号,为一个无符号的短整型(为了能够使用htons()来处理它获得网络Byte-订购)。 我在一个单独的头文件中定义了一个结构,将PORT,HOSTNAME和GAMEKINDNAME分组(我相信常量名称非常明了,它们都分别存储为char数组)。自定义字符数组常量类型转换为unsigned short?
初始化结构的规格如下所示:
struct Config configuration_parameters = {
.type_of_game = GAMEKINDNAME,
.hostname = HOSTNAME,
.port = (unsigned short) PORT
};
在编译时,我收到以下错误:
warning: cast from pointer to integer of different size
error: initializer element is not constant
我认为这可能是由以下事实引起的焦炭用途1字节的存储,而无符号短使用2字节的存储空间,这可能表示某种冲突......这种假设是否正确,如果是的话(或者即使不是),任何人都有如何解决这个问题的想法?
任何帮助,将不胜感激!
为什么将它定义为字符常量?如果它是一个常量,并且你确实需要它是一个字符常量,那么定义第二个'#define PORT_S 80'(将varname和value替换为任何适合的值)并使用它。 – Jite