VS版VLC中對LIVE555加註釋遇到了一個奇怪報錯現象,記錄如下:
p_sys->rtsp->sendSetupCommand( *sub, default_live555_callback, False,
toBool( b_rtsp_tcp ),
toBool( p_sys->b_force_mcast && !b_rtsp_tcp ) );
if( !wait_Live555_response( p_demux ) )/***判斷Setup命令是否發送成功*/
{
如上位置處加一註釋,編譯時會報如下一堆錯誤:
錯誤 31 error C2059: 語法錯誤:“delete” d:\dfb_work\vlc_0525\播放器\vlc-2.2.6.32-2013-master2\vlc-2.2.6.32-2013-master_orgin\modules\access\live555.cpp 1213 1 live555
錯誤 32 error C2059: 語法錯誤:“if” d:\dfb_work\vlc_0525\播放器\vlc-2.2.6.32-2013-master2\vlc-2.2.6.32-2013-master_orgin\modules\access\live555.cpp 1214 1 live555
錯誤 33 error C2143: 語法錯誤 : 缺少“;”(在“->”的前面) d:\dfb_work\vlc_0525\播放器\vlc-2.2.6.32-2013-master2\vlc-2.2.6.32-2013-master_orgin\modules\access\live555.cpp 1217 1 live555
錯誤 34 error C4430: 缺少類型說明符 - 假定爲 int。注意: C++ 不支持默認 int d:\dfb_work\vlc_0525\播放器\vlc-2.2.6.32-
將此註釋放在下面,報錯消失:
p_sys->rtsp->sendSetupCommand( *sub, default_live555_callback, False,
toBool( b_rtsp_tcp ),
toBool( p_sys->b_force_mcast && !b_rtsp_tcp ) );
if( !wait_Live555_response( p_demux ) )
{/***判斷Setup命令是否發送成功*/
同樣改成下面這樣也不報錯:
p_sys->rtsp->sendSetupCommand( *sub, default_live555_callback, False,
toBool( b_rtsp_tcp ),
toBool( p_sys->b_force_mcast && !b_rtsp_tcp ) );
if( !wait_Live555_response( p_demux ) )//這兒加下面一行註釋會報錯
{/***判斷Setup命令是否發送成功*/
未能找到原因,此前曾遇到過VLC怎麼也不能編譯成功的問題,與此類似。
經測試發現應該是VS編譯器的BUG, 應該是中文註釋問題,註釋中的中文要遠離註釋符號最好有個英文空格。
在VLC工程中使用註釋時儘量用
/***
*
*/
不要使用// 或單行的/* */應該就能避免。 其它地方加註也會有類似問題,如果在調試中發現這種大量莫名錯誤的情況可以先懷疑是這種原因