2014-01-17 31 views
2

我試圖玩Eina庫的文件模塊和古典系統調用。 我的問題是當我想使用eina和ftw.h中的一些函數和常量。Eina與EFL不兼容與ftw.h?

這是第一個簡單的代碼:

#define _XOPEN_SOURCE 500 /*Get nftw() and S_IFSOCK declarations*/    
#include <ftw.h>                 
#include <stdio.h>                
#include <stdlib.h>                
#include <Eina.h>                
/*Compile with                 
gcc -o eina_ftw eina_ftw.c $(pkg-config --libs --cflags eina)     
*/                    
int main(int argc, char **argv)             
{                    
    int a = FTW_DNR;                
    int b=0;                  
    b = FTW_MOUNT;                 
    printf("ok\n");                
    exit(EXIT_SUCCESS);               
} 

當我編譯它,我有這些錯誤:

In file included from /usr/include/eina-1/eina/eina_lock.h:50:0, 
       from /usr/include/eina-1/Eina.h:259, 
       from eina_ftw.c:5: 
/usr/include/eina-1/eina/eina_inline_lock_posix.x:57:1: erreur: unknown type name thread_spinlock_t’ 
typedef pthread_spinlock_t Eina_Spinlock; 
^ 
/usr/include/eina-1/eina/eina_inline_lock_posix.x:561:4: erreur: unknown type name ‘pthread_barrier_t’ 
pthread_barrier_t barrier; 
^ 

好了,所以我嘗試這樣做:

#include <Eina.h> 
#define _XOPEN_SOURCE 500 /*Get nftw() and S_IFSOCK declarations*/    
#include <ftw.h>                 
#include <stdio.h>                
#include <stdlib.h>                

/*Compile with                 
gcc -o eina_ftw eina_ftw.c $(pkg-config --libs --cflags eina)     
*/                    
int main(int argc, char **argv)             
{                    
    int a = FTW_DNR;                
    int b=0;                  
    b = FTW_MOUNT;                 
    printf("ok\n"); 
    exit(EXIT_SUCCESS);               
} 

現在我有這種錯誤:

eina_ftw.c: In function ‘main’: 
eina_ftw.c:13:7: erreur: ‘FTW_MOUNT’ undeclared (first use in this function) 
    b = FTW_MOUNT; 
    ^
eina_ftw.c:13:7: note: each undeclared identifier is reported only once for each function it appears in 

所以我想知道是否有辦法解決這個問題?

回答

3

設置_XOPEN_SOURCE 500(大約等於)要求1995 POSIX聲明。

將其設置爲至少600(對於POSIX 2001)或700(對於POSIX 2008)。

當然,嚴格來說,設置_XOPEN_SOURCE是要求開放組(最初是X/Open)單一Unix規範的特定版本,但是POSIX標準和Open Group標準之間有很強的關係。你可以找到更多的:

+0

謝謝,600件作品。 – cedlemo

相關問題