2013-04-24 5 views
0

크로스 플랫폼 프로그램을 만들려고합니다. 방금 클래스를 만들고 현재 사용자의 경로를 가져 오는 함수를 만들었습니다. 나중에 그 경로를 사용하고 싶었습니다. " ') (무효 파일 관리자 :: p_getfilepath'멤버 함수에서 : /usr/include/x86_64-linux-gnu/sys/stat.h:-1"C++ Sys/Stat.h에 오류가 있습니까?

: 어쨌든 나는 이러한 오류를 얻을

"/usr/include/x86_64-linux-gnu/sys/stat.h:105 : 오류 : 문자열 상수 앞에 비 한정 ID가 있어야 함"

"/home/david/VocabularyTrainer/filemanager.cpp:31 : 오류 :

void FileManager::p_getfilepath() 
{ 
#ifdef Q_OS_WIN32 
#include <windows.h> 
#endif 

#ifdef Q_OS_LINUX 
#include <sys/stat.h> 

struct passwd *p; 
uid_t uid; 

if ((p = getpwuid(uid = geteuid())) == NULL) 
{ 
    QMessageBox* mb; 
    mb->setText(""); 
    mb->exec(); 
    delete mb; 
} 
else 
{ 
    filepath = p->pw_dir; 
} 
#endif 
} 
:

"입력의 끝에서 '}'BTW 31 회 라인이 코드 여기 마지막 줄도 예상

무엇이 잘못되었는지 알고 계시나요? 나는 리눅스 박하에있어.

+1

헤더 *를 포함 시키시겠습니까? 나는 거의 잘 풀리지 않을 것이라고 확신합니다. –

+0

linux 또는 unix 시스템에있는 경우에만 헤더를 포함 할 수 있습니다. –

+1

그래도 괜찮지 만 왜 그 방법을 * 내부에서하고 싶습니까? –

답변

2

내부에 클래스 함수 인을 포함 시키면 헤더의 모든 내용이 함수의 일부가됩니다.

#ifdef Q_OS_WIN32 
#include <windows.h> 
#endif 

#ifdef Q_OS_LINUX 
#include <sys/stat.h> 
#endif 

void FileManager::p_getfilepath() 
{ 
#ifdef Q_OS_LINUX 

    struct passwd *p; 
    uid_t uid; 

    if ((p = getpwuid(uid = geteuid())) == NULL) 
    { 
     QMessageBox* mb; 
     mb->setText(""); 
     mb->exec(); 
     delete mb; 
    } 
    else 
    { 
     filepath = p->pw_dir; 
    } 

#endif 
}