C - 奇怪的语法错误

时间:2013-05-30 09:30:32

标签: c visual-studio-2010

我正在用ANSI C编写应用程序(Visual Studio 2010) 我的库看起来像这样:

#include <stdio.h>
#include <stdlib.h>

#ifndef _MYLIB_
#define _MYLIB_

typedef enum {false, true} bool;

// some structures and function prototypes...

#endif

我在每个.c文件中都包含了这个库(我有4个.c文件 - 1个带有main()的main.c和带有函数的其余文件)。

我收到错误:

Generating Code...
1>  first.cpp
1>c:\users\A1\documents\visual studio 2010\projects\pr1\pr1\mylib.h(7): error C2059: syntax error : 'constant'
1>c:\users\A1\documents\visual studio 2010\projects\pr1\pr1\mylib.h(7): error C2143: syntax error : missing ';' before '}'
1>c:\users\A1\documents\visual studio 2010\projects\pr1\pr1\mylib.h(7): error C2059: syntax error : '}'
1>  second.cpp
1>c:\users\A1\documents\visual studio 2010\projects\pr1\pr1\mylib.h(7): error C2059: syntax error : 'constant'
1>c:\users\A1\documents\visual studio 2010\projects\pr1\pr1\mylib.h(7): error C2143: syntax error : missing ';' before '}'
1>c:\users\A1\documents\visual studio 2010\projects\pr1\pr1\mylib.h(7): error C2059: syntax error : '}'

更重要的是 - 当我将所有函数和结构粘贴到main.c中时 - 它正常工作...... 我不知道如何解决它......

1 个答案:

答案 0 :(得分:3)

我坚信您在干扰C ++内置的falsetrue,因此您尝试在enum中重新定义它们。

尝试将falsetrue替换为FALSE,将TRUEbool替换为BOOL

#include <stdio.h>
#include <stdlib.h>

#ifndef _MYLIB_
#define _MYLIB_

typedef enum {FALSE, TRUE} BOOL;

// some structures and function prototypes...

#endif