今天又被vs和xcode坑了一下
中文注释引起的
vs下用utf8 with bom保存时,运行正常
但xcode不支持utf8 with bom,所以改用utf8 without bom保存
然后就发现
vs下utf8 with bom的版本运行正常
vs和xcode utf8 without bom的版本运行不正常
在vs中输出list看到带bom的.cod文件:
; 201 :
; 202 : //经测试,这里指定不匹配的的videoSize也没有关系,ffmpeg会自动纠正,在VLC中播放时它能显示正确的尺寸
; 203 : mInfo.mVideoSize = CSize(640, 480);
0040c 68 e0 01 00 00 push 480 ; 000001e0H
00411 68 80 02 00 00 push 640 ; 00000280H
00416 8d 8d 68 fe ff
ff lea ecx, DWORD PTR $T3[ebp]
0041c e8 00 00 00 00 call ??0CSize@@QAE@HH@Z ; CSize::CSize
00421 8b 08 mov ecx, DWORD PTR [eax]
00423 8b 50 04 mov edx, DWORD PTR [eax+4]
00426 8b 45 ec mov eax, DWORD PTR _this$[ebp]
00429 89 88 60 01 00
00 mov DWORD PTR [eax+352], ecx
0042f 89 90 64 01 00
00 mov DWORD PTR [eax+356], edx
; 204 : mInfo.mStreamVideo->codec->width = mInfo.mVideoSize.cx;
00435 8b 45 ec mov eax, DWORD PTR _this$[ebp]
00438 8b 48 0c mov ecx, DWORD PTR [eax+12]
0043b 8b 51 08 mov edx, DWORD PTR [ecx+8]
0043e 8b 45 ec mov eax, DWORD PTR _this$[ebp]
00441 8b 88 60 01 00
00 mov ecx, DWORD PTR [eax+352]
00447 89 4a 7c mov DWORD PTR [edx+124], ecx
-----------------------------------------------------------------
vs中输出list看到不带bom的.cod文件:
; 201 :
; 202 : //经测试,这里指定不匹配的的videoSize也没有关系,ffmpeg会自动纠正,在VLC中播放时它能显示正确的尺寸
; 203 : mInfo.mVideoSize = CSize(640, 480);
0040c 8b 45 ec mov eax, DWORD PTR _this$[ebp]
0040f 8b 48 0c mov ecx, DWORD PTR [eax+12]
00412 8b 51 08 mov edx, DWORD PTR [ecx+8]
00415 8b 45 ec mov eax, DWORD PTR _this$[ebp]
00418 8b 88 60 01 00
00 mov ecx, DWORD PTR [eax+352]
0041e 89 4a 7c mov DWORD PTR [edx+124], ecx
; 204 : mInfo.mStreamVideo->codec->width = mInfo.mVideoSize.cx;
00421 8b 45 ec mov eax, DWORD PTR _this$[ebp]
00424 8b 48 0c mov ecx, DWORD PTR [eax+12]
00427 8b 51 08 mov edx, DWORD PTR [ecx+8]
0042a 8b 45 ec mov eax, DWORD PTR _this$[ebp]
0042d 8b 88 64 01 00
00 mov ecx, DWORD PTR [eax+356]
00433 89 8a 80 00 00
00 mov DWORD PTR [edx+128], ecx
-----------------------------------------------------------------
; 202 : //经测试,这里指定不匹配的的videoSize也没有关系,ffmpeg会自动纠正,在VLC中播放时它能显示正确的尺寸
; 203 : mInfo.mVideoSize = CSize(640, 480);
可看到不带bom的代码,编译器把中文注释下一行代码当注释忽略掉了,并且vs和xcode都是这样处理的
感觉是个天坑!