gpt4 book ai didi

c++ - 创建一组宏来定义一个名为 RETURN_STATUS 的类型和以下值 :

转载 作者:行者123 更新时间:2023-11-30 02:54:49 25 4
gpt4 key购买 nike

我正在尝试自己完成一本 O'reilly 教科书。我现在真的不明白发生了什么。我阅读了这些章节,但在进行编程练习时根本不知道该怎么做。我知道这个问题看起来应该很容易,但我不知道。

问题:创建一组宏以定义名为 RETURN_STATUS 的类型和以下值:RETURN_SUCCESS、RETURN_WARNING 和 RETURN_ERROR。定义一个宏 CHECK_RETURN_FATAL,,, 它以一个 RETURN_STATUS 作为它的参数并且如果你有一个致命的返回 true错误 r r 或 r.

我的方法:

#include <iostream>

#define RETURN_STATUS RETURN_SUCCESS RETURN_WARNING RETURN_STATUS RETURN_ERROR
#define CHECK_RETURN_FATAL (RETURN_STATUS)

int main()
{
if (RETURN_STATUS == RETURN_ERROR)
return true;
else
return false;

return 0;
}

这只是我拼凑的一些废话,希望奇迹会发生。我错了。对我真正应该做的事情的解释是完美的。谢谢。

最佳答案

在 C/C++ 中,宏定义由左侧的标识符和右侧的内容组成,在程序主体中每次出现的宏都会被替换。当您需要在多个地方使用常量时,此机制很有用(C++ 为这种情况提供了更好的机制,但由于您的问题询问的是预处理器,所以让我们专注于此)。

例如,您可以将 RETURN_STATUS 类型定义为 int,如下所示:

#define RETURN_STATUS int

现在您可以通过为它们的值选择整数常量来定义常量,如下所示:

#define RETURN_SUCCESS 0
#define RETURN_WARNING 1
#define RETURN_ERROR 2

最后,您可以使用此宏检查错误的返回状态:

#define CHECK_RETURN_FATAL(s) (s == RETURN_ERROR)

以下是如何在实际代码中使用这些定义:

RETURN_STATUS check_password(const string& pwd) {
if (pwd.size() == 0) return RETURN_ERROR; // Empty passwords are not allowed
if (pwd.size() < 8) return RETURN_WARNING; // Short passwords are bad
return RETURN_SUCCESS;
}

...
string pwd("tiger");
RETURN_STATUS checkPwdStatus = check_password(pwd);
if (CHECK_RETURN_FATAL(checkPwdStatus)) {
cerr << "Password check failed." << endl;
}

关于c++ - 创建一组宏来定义一个名为 RETURN_STATUS 的类型和以下值 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16826050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com