QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 858|回复: 4

可能是和linux无关 不过倒是蛮有趣的

[复制链接]
发表于 2003-8-21 15:40:32 | 显示全部楼层 |阅读模式
今天受命做一个pc上的模拟系统
原始代码是纯c的 修改了一下使得它符合pc的要求
然后用mfc做界面(不要怪我用win啊 公司里pc全都是win)
遇到一个问题
在mfc的代码里 如果把c的头文件加在任何一个虚函数的实现体之前
就会被告知那个虚函数非法重载?? 也就是比如dodateexchange

//include "implement.h" 加在这里则失败
cdialog::dodateexchange{
。。。
}
//加在这里则成功

由于用的是vs.net 怀疑版本问题
到别人那里的vs6上尝试 发现不论加在哪里都失败?! 只要这个c代码里有虚汗数 就不能加入c的函数
不是/tc /tp的问题 我不甘心手动写了脚本的
用extern "c"来加载c函数 失败...
那位高手指点一下??
发表于 2003-8-21 22:49:30 | 显示全部楼层
应该不会是VS的问题

是不是implement.h中文件的结尾有问题,所以在前面的时候影响了C++的代码

用extern "C"
{
};

也不行么,如果可以的话请把implement.h贴上来
回复

使用道具 举报

 楼主| 发表于 2003-8-22 09:04:41 | 显示全部楼层
这个头文件是做一些虚假的设定的 所以很简单的:

#ifndef FSM_WIN32_IMP
#define FSM_WIN32_IMP

#define uint32 unsigned int
#define uint16 unsigned short
#define uint8  unsigned char
#define BOOL unsigned char
#define TRUE  1
#define FALSE 0
#define SemIdT int
#define Lock(a)
#define UnLock(a)
#define CREATE_LOCK() 0
#define RELEASE_LOCK(a)

/* faked functions define */
int startup_init(int blocks, int blocksize, int sectorsize);
//这里是函数声明 省略了
#endif
回复

使用道具 举报

发表于 2003-8-22 20:37:42 | 显示全部楼层
#define BOOL unsigned char
和MFC中的定义冲突了

MFC中是
#define BOOL int
回复

使用道具 举报

 楼主| 发表于 2003-8-24 09:08:18 | 显示全部楼层
哦 这个问题倒是编译的时候没有出错的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-15 06:10 , Processed in 0.064541 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表