#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 << "!";
}
我变了
LOCAL USER_LOCAL = CHINA;
自
LOCAL USER_LOCAL = 86;
我这样做了,更改为类似的形式。
然后
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
上面的代码按照我的意图工作。
但我想使用国家名称而不是数字。 我误解了(#if~#endif(的工作原理吗?
在#if
中,您只能使用已用#define
初始化的值。这应该按预期工作:
#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