Appearance
格式、缩进与空格
MQL5属于自由格式语言(如C系及其他多种语言)。这意味着只要遵循语法规则,括号、运算符等辅助符号及关键字的放置位置可以自由安排。语法仅限制这些符号和单词的相对顺序,而行首的缩进量或语句元素间的空格数量对编译器没有意义。
在需要分隔语言元素的位置(如变量类型关键字与变量标识符之间),可以使用多个空格。此外,也可以用制表符或换行符代替空格。
当语句元素间存在分隔符(如函数参数间的逗号',')时,无需添加任何空格。
源代码格式的修改不会改变可执行代码。
代码格式化示例
以下展示Greeting
函数的不同写法(功能相同):
紧凑版(使用''换行符仅用于出版需要):
cpp
string Greeting(int hour){string messages[3]={"Good morning",\
"Good afternoon","Good evening"};return messages[hour%24/8];}
扩展版(包含额外空格和换行):
cpp
string
Greeting ( int hour )
{
string messages [ 3 ]
= {
"Good morning" ,
"Good afternoon" ,
"Good evening"
} ;
return messages [ hour % 24 / 8 ] ;
}
MetaEditor代码格式化工具
通过工具 -> 设置 -> 样式器
选择代码风格,使用工具 -> 样式器
应用格式。
格式限制警告
禁止在以下位置插入空格:
- 标识符内部
- 关键字内部
- 数字内部
错误示例:
cpp
return messages[hour % 2 4 / 8]; // 在数字24中间插入空格
编译错误日志:
文件 | 行号 | 列号 | 错误描述 |
---|---|---|---|
GoodTime2.mq5 | 19 | 28 | '4' - 缺少运算符 |
GoodTime2.mq5 | 19 | 18 | '[' - 括号不匹配 |
GoodTime2.mq5 | 19 | 32 | '8' - 缺少运算符 |
GoodTime2.mq5 | 19 | 33 | ']' - 需要分号 |
GoodTime2.mq5 | 19 | 33 | ']' - 意外的标记 |
错误分析技巧:
- 前两个错误提示是关键(运算符缺失和括号不匹配)
- 后续错误由格式混乱引发
- 解决方案:删除数字24中间的多余空格
注意:需结合上下文判断是误留数字还是替换错误
调试建议:
当遇到不明确的错误时,优先检查最近的格式修改,特别是涉及分隔符和数字的部分。