易截截图软件、单文件、免安装、纯绿色、仅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语言回调函数使用

什么是回调函数?
  简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。
  为什么要使用回调函数?
  因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在 ......

选C的概率真的是最高的!

从小老师就教导我们,不会做的题就选C,因为选择题选C的概率是最高的。事实上真是如此吗?今天我突发奇想,利用Google做了一个小实验。统计显示,答案选C的题果然是最多的! Results 1 - 10 of about 364,000 for "这道题选A".
Results 1 - 10 of about 352,000 for "这道题选B".
Results 1 - 10 of about 521,000 for ......

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

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

C typedef详解及与#define的区别

typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。
第一、四个用途
用途一:
定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号