#if 如何工作?我误解了 #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 << "!";
}

我变了

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

最新更新