在下面的半伪代码中,我从文件中获取输入并写入标准控制台输出。然后控制台等待键盘输入。只有 Enter
和 q
键被激活。
如果按下 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
收到 0
或 1
是否重要?或者这应该是 TRUE
还是 FALSE
,因为 wrapper()
返回 BOOL
?我注意到 windef.h
将 TRUE
定义为 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/