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:如果编译时提示错误,双击错误时,提示的地方不一定是案情的第一现场,也许真正的错误是在另一个地方。最有可能就是在包含的头文件里面,这已经不是我第一次遇到了.
相关文档:
系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......
一个简单的小程序, 原题目见<C语言程序设计-现代方法>第八章练习13.
由于自己只看到第八章, 所以, 不敢贸然使用函数等其他内容, 高手请放声大笑.
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define ROWS 10
#define COLS 10
/**
* @author: selfimpr
* @blog: http:// ......
1、开发环境请参考《搭建ACE-5.7.4+VS2008开发环境》一文
2、gSOAP库,下载地址:http://gsoap2.sourceforge.net/,本文使用的版本是:gsoap_2.7.15,gSOAP的编程可以参考doc目录下的soapdoc2.pdf,官方文档写的非常详细。
让我们开始gSOAP编码旅程:
1、创建gsoap_server.h:
//gsoap ns2 service namespace: http://l ......
简单的函数调用,通过简单的函数调用反汇编可以清楚了解如下
1.栈到底是什么,如何操纵栈的?
2.参数和临时变量是以什么形式在哪存放?
3.如何传递返回值?
举例:
#include <stdio.h>
int add(int a,int b)
{
int c=0;
c=a+b;
  ......