2012-12-23 53 views
0

我想包含一個頭文件,其中包含一個結構,但是當我嘗試編譯文件包括頭文件時,我得到No such file or Directory錯誤。 .c和頭文件都在同一個目錄中。沒有這樣的文件或目錄錯誤,包括頭文件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); 

    ..... 
} 

爲什麼會出現這個錯誤?

+1

請加入確切的錯誤你的問題 –

回答

1

在C中,struct定義是而不是 typedef。

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


int main() 
{ 
struct MyShared *obj; 

int shmid,i,childpid; 

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

    ..... 
} 

BTW:我不認爲你想要的指針在共享內存中的數組:char *buf[SIZE]; 大概應該是char buf[SIZE];

+0

謝謝!它工作 – Alfred

+0

這是一個錯字。順便說一句,謝謝糾正。 :) – Alfred

+0

@Alfred現在我很困惑。雖然wildplasser的觀點是好的,但它們與編譯器沒有找到頭部完全沒有關係。那麼這有什麼問題? –

相關問題