0

構造体を含むヘッダーファイルをインクルードしようとしていますが、ヘッダーファイルを含むファイルをコンパイルしようとするとNo such file or Directoryエラーが発生します。.cとヘッダーファイルの両方が同じディレクトリにあります。

コードは次のとおりです。

ヘッダーファイル「MyShared.h」:

#ifndef MYSHARED_H_INCLUDED
    #define MYSHARED_H_INCLUDED
    #define PERM (S_IRWRU | S_IRGRP)
    #define MySharedKey 0343
    #define SIZE 2048

    struct MyShared
    {
        char *buf[SIZE];
        int ReadfromBuf,WriteToBuf,readbytes;
    };
#endif

Mem.cヘッダーファイルを含むファイル:

#include <sys/shm.h>
#include "MyShared.h"

int main()
{
    MyShared *obj;

    int shmid,i,childpid;

    shmid = shmget(MySharedKey,sizeof(MyShared),NULL);

    .....
}

なぜこのエラーが発生するのですか?

4

1 に答える 1

1

C では、構造体定義はtypedefではありません。

#include <sys/shm.h>
#include "MyShared.h"


int main()
{
struct MyShared *obj;

int shmid,i,childpid;

shmid=shmget(MySharedKey, sizeof *obj, NULL);

    .....
}

ところで:共有メモリにポインタの配列が必要だとは思いません:char *buf[SIZE]; おそらくそうあるべきですchar buf[SIZE];

于 2012-12-23T15:19:12.637 に答える