2013-08-21 6 views
0

я в настоящее время развивается на XCode, когда я попытался включить строкуXCode -

#include <string> 

все хорошо, но когда я включаю заголовок CryptoPP, который включает в себя < строку>

#include "integer.h" //integer.h have #include <string> in it 

я получил следующие ошибки во время компиляции

bits/basic_string.tcc:63:11: Cannot define or redeclare '_S_max_size' here because  namespace '_STL' does not enclose namespace '_Rep' 
bits/basic_string.tcc:63:28: Use of undeclared identifier 'npos'; did you mean 'fpos'? 
bits/basic_string.tcc:63:28: Use of class template fpos requires template arguments 
bits/basic_string.tcc:63:33: Expected ')' 
bits/basic_string.tcc:68:11: Cannot define or redeclare '_S_terminal' here because namespace '_STL' does not enclose namespace '_Rep' 
bits/basic_string.tcc:72:44: Cannot define or redeclare 'npos' here because namespace '_STL' does not enclose namespace 'basic_string' 
bits/basic_string.tcc:99:2: Unknown type name 'size_type'; did you mean 'size_t'? 
bits/basic_string.tcc:100:9: Use of undeclared identifier '__beg' 
bits/basic_string.tcc:100:9: Use of undeclared identifier '__end' 
bits/basic_string.tcc:100:9: Use of undeclared identifier '_Rep' 

и так далее ...

Это ошибка в системных заголовках или ошибка в компиляторе? Я использую Apple LLVM 4.2 (и мне нужно его использовать)

ответ

3

Вы не должны включать внутренние заголовки. Если вы хотите получить декларации, необходимые для std::basic_string, включите <string>.

+0

На самом деле его код CryptoPP и он включает в себя как это несколько раз в коде. – bartimar

+0

@bartimar: Просто потому, что в библиотеке что-то используется правильно! Я загрузил CryptoPP-5.6.2 и не включил такой заголовок. Внутренние стандартные заголовки библиотек являются единственным бизнесом стандартной библиотеки. –

+0

Cryptopp integer -> cryptlib -> stdcpp -> string -> basic_string.tcc (include arrow include) – bartimar

Смежные вопросы