RT。
JM86源码使用C写的,想用MFC做个界面,调用C程序。
使用extern "C"包含了.C的头文件,发现许多语法错误。
但是用编译为C++文件的控制台调用时却没发生问题,同样也是extern "C"。
求解这到底是为什么呢?
JM86源码使用C写的,想用MFC做个界面,调用C程序。
使用extern "C"包含了.C的头文件,发现许多语法错误。
但是用编译为C++文件的控制台调用时却没发生问题,同样也是extern "C"。
求解这到底是为什么呢?
typedef enum {
FALSE,
TRUE
} Boolean;头文件中定义的BOOLEAN,编译器显示这里有语法错误
别的错误好像都是因为不认识这个BOOLEAN类型
typedef enum {
FALSE,
TRUE
} Boolean;
Boolean是自己定义的类型
测试过了,将这个写在在头文件中,可以INCLUDE并且在CPP文件中定义并使用,而MFC程序是不认得。不知道为什么?
这应该是命名冲突
试着
重命名或使用命名空间
#define FALSE 0
#define TRUE 1
如果直接或间接包含了这个头文件
则
typedef enum {
FALSE,
TRUE
} Boolean;
会被解析成
typedef enum {
0,
1
} Boolean;
这样当然就编译不过了
不过有什么方案能解决这个冲突么,除了改名还有别的方法么?总不能改WINDEF.H吧
#undef FALSE
#undef TRUE
typedef enum {
FALSE,
TRUE
} Boolean;直接这样就可以
typedef BOOL Boolean;你其他代码不用变.
#include <windef.h>
#include <winnt.h>
#undef FALSE
#undef TRUE
#include "userhead.h"
#define FALSE 0
#define TRUE 1