易截截图软件、单文件、免安装、纯绿色、仅160KB

realview MDK C/C++ 混合编程问题

前几天搞一个项目涉及到C/C++混合编程,在Keil下编译时提示:
error: #800:this declaration may not have extern "C" linkage
error: At end of source : #67:expected a "}"
当时立马想到是C和C++编程时需要extern "C",马上试了试,然后宣告失败。
因为双击后提示出错的地方是template<clase T>,以为是keil不支持类模板造成的,于是查阅相关文档,一切的查阅结果证实keil是完全支持c++的,并且不需要太多的设置。
最后找出问题的元凶是靠一步步实验,建立新工程,测试是哪个文件的问题,最后将矛头直接指向"ch375fsbyte.h"头文件,然后又指向了"CH375HFM.H"这个头文件,最后发现是这个问题:
在CH375HFM前面有这样一段定义
#ifdef __cplusplus
extern "C" {
#endif
而在后面有这样一段定义
#ifdef __cplusplu
}
#endif
仔细的人估计已经看出来了。
前面条件编译是如果用到C++,则定义{,而后面条件编译是想说明如果用到C++,就定义},问题在哪里呢?就在后面那个条件编译的条件是cplusplu,而不是cplusplus这个。所有前面定义了{,而后面没有定义}。
自己这次的认识:
1:Keil是很完整的支持C++的
2:如果一个文件里面的{}不配套是有可能的,例如下面:
#define END_GLUMSG_MAP2() \
   if(bHandle) \
    return 0; \
   return 1; \
  }
意思是}为宏定义的一部分。\表示续行符。Keil也是支持的,但是还是会以红色标记它。
3:如果编译时提示错误,双击错误时,提示的地方不一定是案情的第一现场,也许真正的错误是在另一个地方。最有可能就是在包含的头文件里面,这已经不是我第一次遇到了.


相关文档:

航空公司管理系统(VC++ 与SQL 2005)

系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
      这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......

C语言的一个简单算法: 26个字母随机步生成

一个简单的小程序, 原题目见<C语言程序设计-现代方法>第八章练习13.
由于自己只看到第八章, 所以, 不敢贸然使用函数等其他内容, 高手请放声大笑.
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define ROWS 10
#define COLS 10
/**
* @author: selfimpr
* @blog: http:// ......

Python 3 输出重定向使用C/C++

Python 3 输出重定向使用C/C++
By:gddsky
 
目标
希望将Python 3的输出重定向到自定义的输出目标。
 
核心
Python使用sys.stdout、sys.stderr做输出目标,只要我们替换这两个值就可以重定向到我们自定义目标。替换的值的规则在Python的文档中sys (module)的sys.stdout上面说明只要添加一个write函数就可以 ......

从bmp转换工具生成的c文件中获得bitmap图像输出

在函数体中添加以下代码:注:memcpy中的bitmap为bmp生成的c文件数组名
 int width = 533;
  int height = 615;  
  BYTE* DDBdata=new BYTE[width*height*2];
  BYTE* DIBdata;
  memcpy(DDBdata,(void *)bitmap,width*height*2);
  
   ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号