使用动态成员创建全局结构

时间:2013-04-13 23:13:14

标签: c struct global-variables ipc

我有以下内容:

struct t{
    char arr[variable_len];
    int i;
};

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

有办法做到这一点吗?我本来只是想成为一个指向数组的指针并分别分配数组,但由于我想将这个结构写入管道(指针会被写入而不是实际的数组)这会产生大量问题)。

1 个答案:

答案 0 :(得分:2)

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

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 );
}