Visual C++ 5.0 好像是用 /GR選項,但是在Visual Studio 2005版下編譯,侯捷的RTTI.CPP就會產生一堆下面錯誤的訊息:
RTTI.CPP
C:Program FilesMicrosoft Visual Studio 8VCINCLUDExlocale(326) : warning C4530: 已使用 C++ 例外處理常式,但沒有啟用回溯語意 (Unwind Semantics)。請指定 /EHsc
C:Program FilesMicrosoft Visual Studio 8VCINCLUDExlocale(341) : warning C4530: 已使用 C++ 例外處理常式,但沒有啟用回溯語意 (Unwind Semantics)。請指定 /EHsc
C:Program FilesMicrosoft Visual Studio 8VCINCLUDExlocale(358) : warning C4530: 已使用 C++ 例外處理常式,但沒有啟用回溯語意 (Unwind Semantics)。請指定 /EHsc
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEistream(1075) : warning C4530: 已使用 C++ 例外處理常式,但沒有啟用回溯語意 (Unwind Semantics)。請指定 /EHsc
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEostream(520) : warning C4530: 已使用 C++ 例外處理常式,但沒有啟用回溯語意 (Unwind Semantics)。請指定 /EHsc
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEostream(512) : 編譯類別 樣板 成員函式 ‘std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::put(_Elem)’ 時
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEostream(971) : 請參閱所要編譯的類別 樣板 具現化 ‘std::basic_ostream<_Elem,_Traits>’ 的參考
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEostream(520) : warning C4530: 已使用 C++ 例外處理常式,但沒有啟用回溯語意 (Unwind Semantics)。請指定 /EHsc
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEostream(512) : 編譯類別 樣板 成員函式 ‘std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::put(_Elem)’ 時
with
[
_Elem=wchar_t,
_Traits=std::char_traits<wchar_t>
]
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEostream(980) : 請參閱所要編譯的類別 樣板 具現化 ‘std::basic_ostream<_Elem,_Traits>’ 的參考
with
[
_Elem=wchar_t,
_Traits=std::char_traits<wchar_t>
]
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEistream(102) : warning C4530: 已使用 C++ 例外處理常式,但沒有啟用回溯語意 (Unwind Semantics)。請指定 /EHsc
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEistream(92) : 編譯類別 樣板 成員函式 ‘bool std::basic_istream<_Elem,_Traits>::_Ipfx(bool)’ 時
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEistream(1065) : 請參閱所要編譯的類別 樣板 具現化 ‘std::basic_istream<_Elem,_Traits>’ 的參考
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEistream(102) : warning C4530: 已使用 C++ 例外處理常式,但沒有啟用回溯語意 (Unwind Semantics)。請指定 /EHsc
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEistream(92) : 編譯類別 樣板 成員函式 ‘bool std::basic_istream<_Elem,_Traits>::_Ipfx(bool)’ 時
with
[
_Elem=wchar_t,
_Traits=std::char_traits<wchar_t>
]
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEistream(1100) : 請參閱所要編譯的類別 樣板 具現化 ‘std::basic_istream<_Elem,_Traits>’ 的參考
with
[
_Elem=wchar_t,
_Traits=std::char_traits<wchar_t>
]
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEostream(144) : warning C4530: 已使用 C++ 例外處理常式,但沒有啟用回溯語意 (Unwind Semantics)。請指定 /EHsc
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEostream(143) : 編譯類別 樣板 成員函式 ‘void std::basic_ostream<_Elem,_Traits>::_Osfx(void)’ 時
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEostream(144) : warning C4530: 已使用 C++ 例外處理常式,但沒有啟用回溯語意 (Unwind Semantics)。請指定 /EHsc
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEostream(143) : 編譯類別 樣板 成員函式 ‘void std::basic_ostream<_Elem,_Traits>::_Osfx(void)’ 時
with
[
_Elem=wchar_t,
_Traits=std::char_traits<wchar_t>
]
C:Program FilesMicrosoft Visual Studio 8VCINCLUDExstring(2009) : warning C4530: 已使用 C++ 例外處理常式,但沒有啟用回溯語意 (Unwind Semantics)。請指定 /EHsc
C:Program FilesMicrosoft Visual Studio 8VCINCLUDExstring(2000) : 編譯類別 樣板 成員函式 ‘void std::basic_string<_Elem,_Traits,_Ax>::_Copy(unsigned int,unsigned int)’ 時
with
[
_Elem=char,
_Traits=std::char_traits<char>,
_Ax=std::allocator<char>
]
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEstdexcept(48) : 請參閱所要編譯的類別 樣板 具現化 ‘std::basic_string<_Elem,_Traits,_Ax>’ 的參考
with
[
_Elem=char,
_Traits=std::char_traits<char>,
_Ax=std::allocator<char>
]
C:Program FilesMicrosoft Visual Studio 8VCINCLUDEostream(757) : warning C4530: 已使用 C++ 例外處理常式,但沒有啟用回溯語意 (Unwind Semantics)。請指定 /EHsc
RTTI.CPP(19) : 請參閱所要編譯的函式 樣板 具現化 ‘std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)’ 的參考
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
Microsoft (R) Incremental Linker Version 8.00.50727.762
Copyright (C) Microsoft Corporation. All rights reserved.
/out:RTTI.exe
RTTI.obj
很明顯的它叫我們改用/EHsc選項。
但是如果你查Google時,你會發現/GX選項是跟/EHsc選項是一樣的,但是我編譯時會有這樣的警告:
cl : 命令列 warning D9035 : 選項 ‘GX’ 已被取代,在未來的發行版本中將會移除
cl : 命令列 warning D9036 : 請用 ‘EHsc’ 代替 ‘GX’
表示/GX選項是Visual C++ 5.0以後,2005以前版本在使用的!