今天碰到了一个比较有意思的问题:
先说结论:
以后注释建议建议遵循如下原则:
1)尽量使用英文
2)尽量使用块注释(/* note */),少用行注释(// note);符号和注释之间至少使用一个以上的空格分隔。
描述如下:
由于头文件中使用了如下注释,导致编译时提示(明明在代码中有的属性)属性不存在。
//开仓允许使用的最大资金
排查问题的方法如下:
在开始栏中打开工具:VS2015 x86 本机工具命令提示符
使用命令:cl -E -I路径 -I路径 ... -D预处理 ... 源文件.cpp > 输出文件
具体例子如下:
cl -E -I..\..\sourcebase\platform\. -I..\..\sourcebase\base\. -I..\..\sourcebase\version\. -DTRADERAPI -DLIB_ALGO_API_EXPORT ..\..\sourceapp\traderapi\TraderApiImpl.cpp cltxt
执行后会生成输出文件:cltxt
打开该文件,找到报错的地方查看其报错的属性是否真正存在。
我这次通过输出文件看,确实不存在,分析下来是由于中文注释导致预编译时,在剔除注释代码的时候,编译器误输出了真正的代码,按照如下修改后编译正常。
/* 开仓允许使用的最大资金 */