При использовании googletest я сталкиваюсь со следующей проблемой. Я встроил googletest с
add_subdirectory(src/googletest)
в мой cmake, и он скомпилирован и выполнен нормально.
Все по тесту обычно работают нормально, кроме случаев, когда я пытаюсь протестировать один конкретный модуль с определенным пространством имен с помощьюсинхронизация слов в этом пространстве имен, т.е.
using namespace sync::thbz;
Я использую Google Test для тестирования кода, но я заметил, что когда я хочу протестировать этот конкретный модуль с синхронизацией пространства имен, он не работает, т.е. я получаю
/src/sync.thbz.cpp/src/test/RandomTestString.cpp:26:17: error: expected namespace name
using namespace sync::thbz;
^
/usr/include/unistd.h:973:13: note: 'sync' declared here
extern void sync (void) __THROW;
^
и другая похожая ошибка:
In file included from /src/sync.thbz.cpp/src/test/RandomTestString.cpp:20:
/srcn/sync.thbz.cpp/src/shared/ByteBuffer.h:48:11: error: redefinition of 'sync' as different kind of symbol
namespace sync::thbz {
^
/usr/include/unistd.h:973:13: note: previous definition is here
extern void sync (void) __THROW;
^
In file included from /src/sync.thbz.cpp/src/test/RandomTestString.cpp:21:
, когда я иду и смотрю в заголовочный файл / usr / include / unistd.h , который я вижу в строке973 следующий код
/* Make all changes done to all files actually appear on disk. */
extern void sync (void) __THROW;
есть ли обходной путь для такой проблемы, поскольку я действительно не хочу менять пространство имен только потому, что я решил использовать googletest для этой цели. Что я тут не так делаю? Если я отключу этот модуль с синхронизацией пространства имен, все остальные тесты будут работать нормально. Есть ли обходной путь, который не заставляет меня изменить пространство имен здесь?