c - 在 Windows 上一个函数返回 int 到一个返回 BOOL 的函数是否重要?

标签 c winapi int return-value return-type

在下面的半伪代码中,我从文件中获取输入并写入标准控制台输出。然后控制台等待键盘输入。只有 Enterq 键被激活。

如果按下 Enter 键,更多输出将打印到控制台(假设我们没有读取 EOF)。如果按下 q 键,该函数将返回 1。如果我们读取 EOF,该函数将返回 0

int exit_early(const WCHAR *message)
{
    WCHAR ch[4];
    DWORD nChars;

    /* Read from file and print to standard output. Wait for keyboard input */
    do {
        while (ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), ch, 1, &nChars, NULL))
        {
            if (ch[0] == VK_RETURN)
                break;
            else if (ch[0] == 'q') /* Exit on 'q' key */
                return 1;
        }
    } while (condition);
    /* other code */
    return 0;
}

BOOL wrapper(const WCHAR *message)
{
    BOOl ret;
    /* Get and set console mode */
    ret = exit_early(message);
    /* Restore console mode */
    return ret;
}

int wmain(int argc, WCHAR *argv[])
{
    /* Load file. Send to wrapper().
       Keep going until EOF or early exit returned. */
    while (condition)
    {
        if (wrapper(str)) /* Breaks if TRUE. */
            break;
    }
    /* more code */
    return 0;
}

我无法理解 return 类型是否兼容。 BOOL ret 收到 01 是否重要?或者这应该是 TRUE 还是 FALSE,因为 wrapper() 返回 BOOL?我注意到 windef.hTRUE 定义为 1 并将 FALSE 定义为 0

我想我想问的是 exit_early()wrapper() 是否应该都 return int 或者都应该 返回 BOOL

最佳答案

这无关紧要,因为从技术上讲,BOOL 只是“int”的类型定义。这是它在 WinDef.h 中的定义:

typedef int BOOL;

here是有关 Windows API 定义类型的更多信息。

关于c - 在 Windows 上一个函数返回 int 到一个返回 BOOL 的函数是否重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25786980/

相关文章:

C# 对象转为 MYSQL datediff 的 int

c - 程序在读取输入时循环运行

C - 从数组中删除数字,不会删除相同数字的多个实例,仅删除一个

c++ - 空结构定义在 C 中是非法的,但在 C++ 中不是?

c - 如何使用带有双指针变量(没有支持变量)的结构字段?

Python,为什么返回的 win32api.ShellExecute 句柄不适用于 win32gui.GetWindowRect

ios - 乘法没有给出正确答案

python - 使用 wxpython 传递参数来创建窗口?

VB.NET - 背景像 UAC 消息一样淡化?

java - 将哈希表上的字符数组转换为整数