Switch() 案例:具有已定义的常量
Switch() Case: with an already defined constant
编译器一直抱怨 switch(){...}
中的 case
类型需要常量。但是我提供了一个该死的常量。 - 抱歉,/关闭咆哮模式
在我的 class 中,我定义了 type
加上 TYPE_BULLISH
和 TYPE_BEARISH
类型的 int
常量。然后我赋值:
static const int TYPE_BULLISH = 0x001;
static const int TYPE_BEARISH = 0x002;
我为变量type
分配了一个值:
type = TYPE_BULLISH;
然后在构造函数中
switch(type) {
case TYPE_BULLISH: Print("Bullish"); break;
case TYPE_BEARISH: Print("Bearish"); break;
default: Print("Doji");
}
输出错误:
'TYPE_BULLISH' - constant expression required
Q1:
知道这里发生了什么吗?
我的意思是,
Q2:
我提供了一个常量,对吧?
尝试使用 #define
代替(注意:否;在 #define
末尾):
#define TYPE_BULLISH 0x001
#define TYPE_BEARISH 0x002
int type = TYPE_BULLISH;
switch(type) {
case TYPE_BULLISH: Print("Bullish"); break;
case TYPE_BEARISH: Print("Bearish"); break;
default: Print("Doji");
}
A2:
不,您没有提供常量。
A1:
您的 MQL4 代码语法错误,无法编译。
虽然@JosephLee 提供了一个避免错误的替代品,但问题以某种方式隐藏起来,MQL4
-代码保留了有效范围
您的 class
级名称在容器外不再存在,这些名称已在其中声明/初始化。
您的代码,在此类容器之外(通常是最内层的 { ... }
-代码块/层次结构级别,发生此类声明的地方)根本无法编译,因为编译器遵守规则源代码解析期间的有效范围。
Q.E.D.
如果需要这种集中管理的预定义常量,可以使用 "globally"-可见变量。
请注意,#include
、#import
、#property library
和 #export
会给这个马戏团带来更多破坏。
You were warned, at least...
A use of a utility-function
:
Example code how to use it from one library project
:
编译器一直抱怨 switch(){...}
中的 case
类型需要常量。但是我提供了一个该死的常量。 - 抱歉,/关闭咆哮模式
在我的 class 中,我定义了 type
加上 TYPE_BULLISH
和 TYPE_BEARISH
类型的 int
常量。然后我赋值:
static const int TYPE_BULLISH = 0x001;
static const int TYPE_BEARISH = 0x002;
我为变量type
分配了一个值:
type = TYPE_BULLISH;
然后在构造函数中
switch(type) {
case TYPE_BULLISH: Print("Bullish"); break;
case TYPE_BEARISH: Print("Bearish"); break;
default: Print("Doji");
}
输出错误:
'TYPE_BULLISH' - constant expression required
Q1:
知道这里发生了什么吗?
我的意思是,
Q2:
我提供了一个常量,对吧?
尝试使用 #define
代替(注意:否;在 #define
末尾):
#define TYPE_BULLISH 0x001
#define TYPE_BEARISH 0x002
int type = TYPE_BULLISH;
switch(type) {
case TYPE_BULLISH: Print("Bullish"); break;
case TYPE_BEARISH: Print("Bearish"); break;
default: Print("Doji");
}
A2:
不,您没有提供常量。
A1:
您的 MQL4 代码语法错误,无法编译。
虽然@JosephLee 提供了一个避免错误的替代品,但问题以某种方式隐藏起来,MQL4
-代码保留了有效范围
您的 class
级名称在容器外不再存在,这些名称已在其中声明/初始化。
您的代码,在此类容器之外(通常是最内层的 { ... }
-代码块/层次结构级别,发生此类声明的地方)根本无法编译,因为编译器遵守规则源代码解析期间的有效范围。
Q.E.D.
如果需要这种集中管理的预定义常量,可以使用 "globally"-可见变量。
请注意,#include
、#import
、#property library
和 #export
会给这个马戏团带来更多破坏。
You were warned, at least...
A use of a utility-function
:
Example code how to use it from one library project
: