作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码块
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/
我是一名优秀的程序员,十分优秀!