创建具有动态成员的全局结构体



我有如下内容:

struct t{
    char arr[variable_len];
    int i;
};
int main(int argc, char *argv[]){
    // set size of arr to length of argv[1]
}

有办法做到这一点吗?我最初只是要让arr是一个指向数组的指针,并单独分配数组,但这造成了大量的问题,因为我想把这个结构体写到管道(指针会被写入,而不是实际的数组)。

不考虑缺少错误检查,您可以执行以下操作…

struct t
{
    int i;
    int data_len;
    char arr[];
};
int main( int argc, char* argv[] )
{
    int data_len = atoi( argv[1] );
    struct t* var;
    var = malloc( sizeof( struct t ) + data_len );
    var->data_len = data_len;
    // open a pipe and do cool stuff to var
    fwrite( var, sizeof( struct t ) + var->data_len, 1, output_pipe );
    free( var );
}

相关内容

  • 没有找到相关文章

最新更新