Chinaunix首页 | 论坛 | 博客
  • 博客访问: 425806
  • 博文数量: 79
  • 博客积分: 2886
  • 博客等级: 少校
  • 技术积分: 968
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-16 10:33
文章分类

全部博文(79)

文章存档

2013年(7)

2012年(17)

2011年(28)

2010年(25)

2009年(1)

2008年(1)

我的朋友

分类: C/C++

2010-01-06 15:40:36

1.ifdenf ifndef define endif

ifdenf ifndef的作用是防止该头文件被重复引用。
比如你有两个C文件,这两个C文件都include了同一个头文件。
而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

注:#pragma once用来防止某个头文件被多次include,#ifndef,#define,#endif用来防止某个宏被多次定义。

#if !defined(AFX_GREADER_H__A38AD308_3323_4319_9F9A_8D51D3C5138A__INCLUDED_)
#define AFX_GREADER_H__A38AD308_3323_4319_9F9A_8D51D3C5138A__INCLUDED_

#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif


2.__cplusplus
#ifdef __cplusplus
extern "C" {
#endif
//一段代码
#ifdef __cplusplus
}
#endif
__cplusplus是c++编译环境中的自定义宏,这个宏表示告诉编译器下面的函数是c语言函数 (plus就是"+"的意思)
3.extern

关键字extern为声明但不定义一个对象提供了一种方法,extern声明不会引起内存被分配。
extern int a;表示   a是在其它文件中定义的一个变量,需要在这里引用。a已在别的文件中,所以不需要再分配空间了。
a变量:
  第一般有两种情况,一是该变量是在其他的文件中定义的全局变量,简称外部变量。
  第二种情况表示变量在本文件中定义的全局变量,但是在使用之后(因为作用域)定义的。
实际上在类、函数之外声明的变量都是全局变量,所以如果在两个不同的.cpp中声明同名的变量,则在链接时肯定会报告错误。如果要避免这种潜在的冲突,可以在定义变量定义
前加static,如: static int nValue; 这样,在声明这个变量以外的.cpp中nValue不能访问,也不会引起冲突。

extern "c" 表示函数使用C的连接方式,也就是说能被C语言写的程序调用。
extern   "C"表示编译生成的内部符号名使用C约定  
例如:  
int   Fun(int   i,int   j)  
C:_Fun  
C++:_Fun_int_int  
具体生成什么可能与编译器有关。
 
 
阅读(2353) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~