Ошибка определения типа в C ++ - PullRequest
0 голосов
/ 08 июня 2011

Я пытаюсь использовать библиотеку из моего проекта Qt, которая имеет варианты C и C ++.

если я включу файл C ".h", похоже, я могу использовать это нормально. Однако, чтобы придерживаться стиля моего проекта C ++ QT, я хотел использовать версию ".hpp" C ++.

Я получаю сообщение об ошибке в этом блоке кода из одного из заголовочных файлов библиотек:

#ifndef __SYS_SEMAPHORE_H__
#define __SYS_SEMAPHORE_H__ 
/**
 *  \file 
 *  \brief Include the right semaphore.
 *
 *  This file will auto-select the semaphore of choice,
 *  if one is to be defined.  
 *  \note We need to change the windows part to check _MT
 *  because that is how it determines reentrance!
 *
 */
#  if defined(_REENTRANT)

#    if defined(USE_NSPR_THREADS)
#        include "sys/SemaphoreNSPR.h"
namespace sys
{
typedef SemaphoreNSPR Semaphore;
}
// If they explicitly want posix
#    elif defined(__POSIX) && !defined(__APPLE_CC__)
#        include "sys/SemaphorePosix.h"
namespace sys
{
typedef SemaphorePosix Semaphore;
}
#    elif defined(WIN32)
#        include "sys/SemaphoreWin32.h"
namespace sys
{
typedef SemaphoreWin32 Semaphore;
}
#    elif defined(__sun) && !defined(__POSIX)
#        include "sys/SemaphoreSolaris.h"
namespace sys
{
typedef SemaphoreSolaris Semaphore;
}
#    elif defined(__sgi) && !defined(__POSIX)
#        include "sys/SemaphoreIrix.h"
namespace sys
{
typedef SemaphoreIrix Semaphore;
}
#    elif defined(__APPLE_CC__)
typedef int Semaphore;
#    else
#        include "sys/SemaphorePosix.h"
namespace sys
{
typedef SemaphorePosix Semaphore;
}
#    endif // Which thread package?

#  endif // Are we reentrant?

#endif // End of header

Строка, определяющая определение типа SemaphorePosix, - это место, где происходит ошибка, но я получаю похожую ошибку при компиляции нескольких разных заголовочных файлов, выполняющих такие же условия, включая / typedef'ing.

Если быть точным, ошибка при компиляции: "SemaphorePosix не называет тип"

Кроме того, sys / *. H должен быть доступен - у меня в пути включения находится верхний уровень о папке sys из библиотеки include папки

1 Ответ

0 голосов
/ 08 июня 2011

Вы пробовали ::SemaphorePosix?Или, может быть, этот тип определен в другом пространстве имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...