簡體   English   中英

C ++ Builder:#include <iostream> 錯誤

[英]C++ Builder : #include <iostream> error

我正在測試新版本的CBuilder(XE2版)。 大多數常用命令都被重定向到boost庫或dinkumware庫(某些STL實現?)。

#ifndef Error_H
#define Error_H

#include <exception>
#include <iostream> //Error message, see bellow, please

但是編譯停止並顯示以下(和奇怪的)消息:

[BCC32 Error] xlocale(1392): E2451 Undefined symbol 'MB_LEN_MAX'[BCC32 Error] xlocale(1763):    
[BCC32 Error] xlocnum(1495): E2451 Undefined symbol 'CHAR_MAX'
Full parser context
xlocnum(1487): decision to instantiate: ostreambuf_iterator<char,char_traits<char> > numput::_Iput(ostreambuf_iterator<char,char_traits<char> >,ios_base &,char,char *,unsigned int) const
--- Resetting parser context for instantiation...
detectproj.cpp(22): #include c:\program files\embarcadero\rad studio\9.0\include\dinkumware\iostream
iostream(5): #include c:\program files\embarcadero\rad studio\9.0\include\dinkumware\istream
istream(5): #include c:\program files\embarcadero\rad studio\9.0\include\dinkumware\ostream
ostream(5): #include c:\program files\embarcadero\rad studio\9.0\include\dinkumware\ios
ios(5): #include c:\program files\embarcadero\rad studio\9.0\include\dinkumware\xlocnum
xlocnum(30): namespace std
xlocnum(1036): class num_put<_Elem,_OutIt>
xlocnum(1487): parsing: ostreambuf_iterator<char,char_traits<char> > numput::_Iput(ostreambuf_iterator<char,char_traits<char> >,ios_base 

一個有趣的事實是,在編譯我自己的源代碼之前已經停止了編譯...編譯器按以下順序瀏覽包含的文件:

iostream -> istream -> ostream -> ios-> xlocnnum 
iostream -> istream -> ostream -> ios-> xlocnnum -> streambuf -> xiosbase ->xlocale

並中斷xlocnum和xlocale文件的處理,並出現以下錯誤:

E2451 Undefined symbol 'CHAR_MAX'
E2451 Undefined symbol 'MB_LEN_MAX'

問題可能出在哪里? 我從“包含路徑”中刪除了所有項目,為什么IDE仍包含dinkumware庫而不是普通庫?

設定:

Link with dynamic RTL: Off
CodeGuard: On
Directories and Conditionals/All configurations/Include Path: Empty
Directories and Conditionals/All configurations/Library Path: Empty
No pragma hdrstop, #pragma argsused are used in my code.

較舊的版本(C ++ Builder 2010)運行良好...

謝謝你的幫助。

我知道這是一篇老文章,但有人可以像我一樣在互聯網搜索中找到它。 檢查您的項目設置; 我有一個項目開始生成類似錯誤,並且發現我已在“編譯器設置”選項卡中將代碼合規性設置從Borland / Codegear更改為ANSI。 改回來消除了錯誤。

您的#ifndef頭文件末尾是否有匹配的#endif?

產生此錯誤的最小的使用完整示例代碼是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM