我正在尝试将char shm[][] var放入共享内存中,并且我有以下代码。

int main(){
    int shmid;
    key_t key;
    char shm[15][10];

    if ((key = ftok("test.c", 'R')) == -1) {
        perror("ftok");
        exit(1);
    }

    shmid=shmget(key, SHM_SIZE, IPC_CREAT | 0666);
    if(shmid<0){
        perror("shmget");
        exit(1);
    }


    shm=shmat(shmid, NULL, 0);
    if(shm==(void*)-1){
        perror("shmat");
        exit(1);
    }
}


尝试编译时出现以下编译错误:

error: assignment to expression with array type
     shm=shmat(shmid, NULL, 0);


难道我做错了什么?

谢谢你的帮助。

最佳答案

你要:

char (*shm)[10] = shmat(shmid, NULL, 0);


这是指向行数和列数未知的二维矩形数组的指针。

10-08 13:29