繁体   English   中英

如何将c结构定义转换为c ++

[英]How to convert c struct definitions to c++

iov[0] = (struct iovec) {
    .iov_base = &req,
    .iov_len = sizeof(req)
};

我正在尝试将一些代码从ss网络实用程序转换为c ++,上面和类似的代码一直在给出这些错误:

main.cpp|83|error: expected primary-    expression before ‘struct’
main.cpp|83|error: expected ‘)’ before ‘struct’

C ++不支持该语法。 尝试这个:

iovec iov[2];
iov[0].iov_base = &req;
iov[0].iov_len = sizeof req;
/* ... */

或者可能:

iovec iov[] = {
    {
       &req, sizeof req
    },
    /* ... */
}

你正在尝试的是一个名为“复合文字”的C99功能。 此外, .iov_base事物被称为“指定初始化程序”。

C ++中不存在复合文字。 您可以单独指定结构成员作为cnicutar建议,或者您也可以定义临时对象,然后将其分配给iov第一个数组元素。 像这样:

iovec iov_temp = {&req, sizeof req}; 
iov[0] = iov_temp;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM