gpt4 book ai didi

编译错误枚举参数 - 为什么?

转载 作者:行者123 更新时间:2023-11-30 17:00:12 24 4
gpt4 key购买 nike

我有以下代码块

global_definitions.h:(这包含在下面的头文件和源文件中):

typedef enum { FALSE = 0, TRUE = !FALSE } bool;

头文件Log.h:

void Log_Leave_Func_Int
(
Log_Module_ID_t Module_ID,
const char *Function_Name,
const bool Has_Return_Value,
const int Return_Value
);

源文件Log.c:

void Log_Leave_Func_Int
(
Log_Module_ID_t Module_ID,
const char *Function_Name,
const bool Has_Return_Value,
const int Return_Value
)
{
bool HRetVal = Has_Return_Value;
/* some code here */
}

现在,在编译我的程序(使用 CVI 2012)时,我收到错误 "Log.h"(366,20) 语法错误;发现'identifier'期待')'。指的是Log.h中的行,内容为const bool Has_Return_Value,,这对我来说完全是个谜。

我已经尝试将 bool 的定义更改为

typedef enum { FALSE, TRUE } bool;

甚至

#define FALSE 0
#define TRUE 1
#define bool int

这没有什么区别。因此,它与 bool 的定义无关(错误表明)。此外,局部变量 HRetVal(bool 类型)不会被标记为错误。

我也尝试过不将参数声明为 const,这会显示另一条错误消息("Log.h"(366,3) 缺少参数类型。),但是仍然无法编译。

将参数 Has_Return_Value 的类型更改为 int 可以顺利编译(毫不奇怪)。另一方面,使用普通的 int 并不是这里的目的。

我是否不允许使用 typedef 枚举的参数?如果是这样,那么为什么(我在其他地方使用 typedef 枚举没有任何问题)?有人能给我解释一下这里可能出了什么问题吗?

最佳答案

如果您包括<stdbool.h> ,无论是直接还是间接,你都会遇到问题。

此外,调用枚举 bool如果您希望从 C++ 使用您的代码,那就是自找麻烦。我建议使用不同的名称或不同的大小写(可能是 BOOL)以避免出现任何问题。或者,只需坚持使用 int因为它是一个很好理解的 C 范例。

关于编译错误枚举参数 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37724395/

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