简体   繁体   English

#if 如何工作? 我是否误解了#if~#endif 的形式?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM