#i nclude "stdafx.h"
1.extern用在变量声明中常常有这样一个作用,你在*.c文件中声明了一个全局的变量,这个全局的变量如果要被引用,就放在*.h中并用extern来声明。
2.如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。即下述两个函数声明没有区别:
extern int f(); 和int f();
=================================
如果定义函数的c/cpp文件在对应的头文件中声明了定义的函数,那么在其他c/cpp文件中要使用这些函数,只需要包含这个头文件即可。
如果你不想包含头文件,那么在c/cpp中声明该函数。一般来说,声明定义在本文件的函数不用“extern”,声明定义在其他文件中的函数用“extern”,这样在本文件中调用别的文件定义的函数就不用包含头文件
include “*.h”来声明函数,声明后直接使用即可。
=================================
举个例子:
//extern.cpp内容如下:
// extern.cpp : Defines the entry point for the console application.
//
#i nclude "stdafx.h"
extern print(char *p);
int main(int argc, char* argv[])
{
char *p="hello world!";
print(p);
return 0;
}
//print.cpp内容如下
#i nclude "stdafx.h"
#i nclude "stdio.h"
print(char *s)
{
printf("The string is %s\n",s);
}
结果程序可以正常运行,输出结果。如果把“extern”去掉,程序依然可以正常运行。
由此可见,“extern”在函数声明中可有可无,只是用来标志该函数在本文件中定义,还是在别的文件中定义。只要你函数在使用之前声明了,那么就可以不用包含头文件了。
相关文章
- C# 中利用反射机制拷贝类的字段和属性(拷贝一个类对象的所有东西付给另一个类对象,而不是付给引用地址)
- 如何创建使用将类中的方法绘制到另一个类的JPanel中
- Gmock不能模拟在同一个类中调用另一个方法的方法
- c++中对类中私有成员中的静态变量初始化
- c++中对类中私有成员中的静态变量初始化
- C#学习笔记之六 类定义中static关键字的用法暨C#中静态变量的意义与使用
- 如何通过C#.NET中的反射机制来创建C#.NET泛型类的实例,并调用其方法??
- 将JPanel类放入另一个类的JFrame中
- MyEclipse工具开发常用快捷键 普通: Ctrl+Shift+L 显示所有快捷键 Ctrl+K 参照选中的词(Word)快速定位到下一个 Ctrl+Shift+K 参照选中的词(Word)快速定位到上一个 Ctrl+O 快速显示OutLine Ctrl+T 快速显示当前类的继承结构 Ctrl+Shift+X 把选中文本全部改为大写 Ctrl+Shift+Y 把选中文本全部改为小写 Ctrl+Shift+F 按照当前的配置文件格式化源代码 Ctrl+L 弹出行定位框以便定位到某一行 Ctrl+Numpad_Divide Ctrl+/(小键盘) 使代码折叠可用 Ctrl+Numpad_Multify Ctrl+*(小键盘) 展开当前类中的所有代码 Ctrl+Shift+Numpad_Divide Ctrl+Shift+/(小键盘) 折叠所有,如果不能全部成功折叠,将光标移到文档最后试着或多按几次折叠当前类中的所有代码 Ctrl+1 快速修正,需要导包的时候出现导包提示界面, Ctrl+Q 定位到
- iOS 如何在一个已经存在多个project的workspace中引入cocoapods管理第三方类库