好神奇的 extern "C" 哦。。。
有关 extern "C"
搞过C和C++混编的同志们都知道这个啥意思。
这儿有讲:http://www.cppblog.com/Macaulish/archive/2008/06/17/53689.html
但看一下下面的这个代码:
#include <iostream>
using namespace
std;
extern "C" { int g_inta; }
int main (void)
{
g_inta = 1;
cout << g_inta << endl;
return 0;
}
你觉得g_inta定义了不?嗯。。。它已经被定义了,要不编不过去。。。
如果把
extern "C" { int g_inta; }换做
extern "C" int g_inta;
extern { int
g_inta; }
extern int g_inta;
再试试呢?嗯。。。这只是对外部变量的声明,而非定义,是编不
过去的。
就为这个折腾了半晌,最后看看这个:
http://book.51cto.com/art/200904/121028.htm
最后感谢刘合同学的激情参与,哈哈。。。
相关文档:
http://www.gamedev.net/reference/programming/features/orgfiles/page2.asp
通过四个pitfall讲解头文件的由来和好处,以及使用头文件定义inline func and template.
Remember that, as far as the compiler is concerned, there is absolutely no difference between a header file and a source file.
The key idea ......
ARM C嵌入式编程中的几个关键字
1、访问绝对地址的内存位置:
#define pISR_EINT0 (*(unsigned *) (_ISR_STRATADDRESS+0x74))
上述语句把无符号整数_ISR_STRATADDRESS+0x74强制转换为指针,指向RAM,用下面的语句可以访问它:
pISR_EINT0 = (int)Eint0_ISR
& ......
一、一个经过编译的C/C++的程序占用的内存分成以下几个部分:
1、栈区(stack):由编译器自动分配和释放 ,存放函数的参数值、局部变量的值等,甚至函数的调用过程都是用栈来完成。其操作方式类似于数据结构中的栈。
2、堆区(heap) :一般由程序员手动申请以及释放, 若程序员不释放,程序结束时可能由OS回收 ......
c/s是客户端和服务器,b/s是浏览器和服务器。
c/s在客户端要安装软件的,b/s只要有IE就可以浏览。
c/s的扩展升级比较困难,b/s就很容易的。
c/s的安全性好一些,b/s就没有c/s的高。
c/s一般用在局域网,b/s一般用在广域网。
------------------------------------------------
C/S运用在有专用性的场合。比如 ......
1.fopen()
fopen的原型是:FILE *fopen(const char
*filename,const char
*mode),fopen实现三个功能:为使用而打开一个流,把一个文件和此流相连接,给此流返回一个FILR指针。
参数filename指向要打开的文件名,mode表示打开状态的字符串,其
取值如下:
字符串 含义
"r" 以只读方式打开 ......