ruby2.2.2在msvc2010上编译有些问题,主要是msvc2010不支持c99,ruby有些扩展源代码例如ffi.c局部变量没有在block的起始位置定义,导致编译器报错。
办法
1.用支持c99的编译器,把msvc2010丢到垃圾桶里。
2.继续使用本应丢到垃圾桶里msvc2010,在这些变量上加上作用域。
另外,ruby构建默认使用/O2(/O2sy- 最大速度最小体积不做fpo)优化,为了更有利于调试,可以把它改为/Od,修改win32目录下Makefile.sub文件,查找OPTFLAGS。
详细分析ruby解析器参考
https://ruby-hacking-guide.github.io/