0

我正在尝试创建一个跨平台程序。我刚刚创建了一个类并创建了一个获取当前用户路径的函数。我想稍后使用那条路径。但不知何故,我得到了这些错误:

“/usr/include/x86_64-linux-gnu/sys/stat.h:-1: 在成员函数'void FileManager::p_getfilepath()'中:”

“/usr/include/x86_64-linux-gnu/sys/stat.h:105: 错误: 字符串常量之前的预期 unqualified-id”

“/home/david/VocabularyTrainer/filemanager.cpp:31:错误:输入结束时应为'}'”

顺便说一句,第 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
}

有谁知道出了什么问题?我在 linux mint 上。

4

1 回答 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
}
于 2013-04-24T17:03:47.927 回答