[英]how #if does work? Do I misunderstand form of #if~#endif?
#include <stdio.h>
#include <iostream>
using namespace std;
typedef int LOCAL;
LOCAL JAPAN = 81;
LOCAL KOREA = 82;
LOCAL CHINA = 86;
LOCAL USER_LOCAL = CHINA;
#if (USER_LOCAL == KOREA || USER_LOCAL == JAPAN)
typedef char NAME[20];
#elif (USER_LOCAL == CHINA)
typedef char NAME[5];
#endif
int main()
{
NAME playername;
cin >> playername;
cout << "Welcome, " << playername << "!";
}
I changed我变了
LOCAL USER_LOCAL = CHINA;
to到
LOCAL USER_LOCAL = 86;
I did this changing to similar forms.我把这个改成类似的形式。
then然后
typedef int LOCAL;
LOCAL KOREA = 82;
LOCAL JAPAN = 81;
LOCAL CHINA = 86;
LOCAL USER_LOCAL = 86;
#if (USER_LOCAL == 82 || USER_LOCAL == 81)
typedef char NAME[20];
#elif (USER_LOCAL == 86)
typedef char NAME[5];
#endif
The above code works what I intended.上面的代码按我的意图工作。
but I want to use country names instead of numbers.但我想使用国家名称而不是数字。 Do I misunderstand how (#if ~ #endif) works?我是否误解了 (#if ~ #endif) 的工作原理?
In #if
, you can only use values that have been initialized with #define
.在#if
,您只能使用已用#define
初始化的值。 This should work as expected:这应该按预期工作:
#define JAPAN 81
#define KOREA 82
#define CHINA 86
#define USER_LOCAL CHINA
#if (USER_LOCAL == KOREA || USER_LOCAL == JAPAN)
typedef char NAME[20];
#elif (USER_LOCAL == CHINA)
typedef char NAME[5];
#endif
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.