我将linux的代码,放到win 7下的cygwin里进行编译和执行。 死的比较难看。跟踪到的错误,实际是在三个平台上存在两种不同的情况。
mac os 下,apple llvm 5.0 , sizeof(va_list) == 24
(ubuntu) linux 下,gcc 4.8.2 , target x86_64-linux-gnu ,sizeof (va_list) == 24
cygwin(win7)下, gcc 4.8.3 ,target x86_64-pc-cygwin,sizeof (va_list) == 8
即便makefile 的 CFLAGS 增加 -D_M_ALPHA ,仍然无效,现在只能通过把 va_list ,va_start 等等用宏裹一层的方式,自定义选择性的实现。
是否与靠谱的方式,通过cygwin的gcc的参数配置,让 sizeof(va_list) == 24 。
有段时间没有在win下玩代码了。。。。把这个差异忘记了。cygwin里的坑但愿只有一个。。。。。。
有跌过爬出来的,给个比较规范的方法(非自行定义宏开关实现),多谢。
补充说一句,抓这个bug,mac os ,ubuntu ,win7+cygwin 三个平台同时测,体验度 mac os (这是生活),ubuntu (这是工作), win7+cygwin(这是坐牢)。。。哈不起来了,shit一把。。。。
补充总结下问题的描述,“win ,cygwin 下, va_list 被定义成char *,而 mac linux上不是如此,怎么解决按照mac os 或linux的方式编写的代码,对于va_list 在cygwin下不被定义成char *”,两种类型定义方法,对相同代码可能引发错误。
这么晚了,我是来帮顶的。。。。真心不会C######回复 @中山野鬼 : Microsoft认为自己就是标准。######多谢多谢。。。。。。。。。真心想不出windows为什么这么变态不按posix的标准走。。。。。######留名,php是最好的语言→_→######va_list 是个啥东西啊。######这是win的问题还是cygwin的问题啊?######
######
######
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。