Mongoose - ошибка при включении файлов стандартной библиотеки C++
Я использую mongoose для создания HTTP-сервера на C++ и получаю сообщение об ошибке, когда пытаюсь включить другие файлы в свою программу:
/Library/Developer/CommandLineTools/usr/include/c++/v1/cstdint:183:8: error:
expected unqualified-id
using::intptr_t;
^
/Users/cs/Downloads/mongoose-master/mongoose.c:2415:18: note:
expanded from
macro 'intptr_t'
#define intptr_t long
^
Это происходит всякий раз, когда я пытаюсь включить в свою программу следующие файлы:
#include <string>
#include <vector>
#include <cstring>
#include <iostream>
#include <iterator>
#include <sstream>
Я попытался сузить его до одного из этих файлов, вызывающих проблему, закомментировав некоторые из них, но похоже, что любой из них вызывает ошибку. Что интересно, string.h не вызывает ошибки.
1 ответ
Похоже, ваш исходный код содержит что-то вроде этого:
#include <mongoose.c>
Файл.c определяет макрос, который противоречит словам, используемым в заголовках стандартной библиотеки.
Включение файла.c - не лучшая практика. Вместо этого вы должны создать библиотеку мангуста и связать свою программу с ней.
Если вам действительно нужно хранить все в одной единице перевода, вы сможете переместить этот сомнительный include
после всех остальных заголовков или даже в конец вашего файла cpp.
Но было бы лучше выяснить, как построить mongoose.c отдельно, а затем связать его с полученной библиотекой. Вы можете задать отдельный вопрос или посмотреть, получите ли вы что-нибудь из этого: Не могу понять, как создать приложение C после добавления Mongoose Embedded