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工程中使用注释时尽量用
/***
*
*/
不要使用// 或单行的/* */应该就能避免。 其它地方加注也会有类似问题,如果在调试中发现这种大量莫名错误的情况可以先怀疑是这种原因