C/C++ extern practices

原创 2015年07月11日 09:36:38

Good style of using extern keyword in C/C++:

For variables, like int, float, pointers, please declare them in .h files, then define them in respective .cpp file, for example,

t1.h:

#ifndef T1H
#define T1H
#include <iostream>
using namespace std;

extern int a;
extern char g_str[7];
extern char* p_str;

void func1();

#endif

t1.cpp:

#include "t1.h"

int a = 10;
char g_str[] = "123456";
char* p_str = (char*)"test in t1.cpp";

void func1()
{
	cout << "func1(), a:" << a << endl;
	cout << "func1(), g_str:" << g_str << endl;
	cout << "func1(), p_str:" << p_str << endl;
}

t2.h:

#include "t1.h"
#include <iostream>
#include <string.h>

using namespace std;

void func2();
static void func3();

t2.cpp:

#include "t2.h"

void func2()
{
	a = 11;
	cout << "func2(), a:" << a << endl;

	g_str[0] = '9';
	// Can't use g_str = "873654", array is not modifiable l-values,
	// so use strcpy() to change them.
	strcpy(g_str, "873654");
	cout << "func2(), g_str:" << g_str << endl;

	p_str = (char*)"test in t2.cpp";
	cout << "func2(), p_str:" << p_str << endl;
}

static void func3()
{
	cout << "static func3()." << endl;
}

test_extern.cpp:

#include <stdio.h>
#include <iostream>
#include "t1.h"
#include "t2.h"

using namespace std;

// if we not include respect .h file, using extern to declare function prototype, which tell current module to 
// find this function in other modules; if we include .h, still could declare function prototype, but no necessary
extern void func2();

int main()
{
	func1();
	func2();
	// func3() is static function, static function only can used in its owning module, 
	// if called in other module then compiling error occurs.
	// func3();
	return 0;
}


extern在C和C++中的作用

  • 2015年11月30日 16:32
  • 18KB
  • 下载

Secure Coding Best Practices for Memory Allocation in C and C++

IntroductionTomes (and I'm talking of real big tomes) are available on secure coding in C and C++. T...

C++中extern “C”含义深层探索.doc

  • 2009年05月08日 04:21
  • 42KB
  • 下载

C/C++中extern关键字详解

1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。       也...

探索C++的秘密之详解extern C

  • 2010年03月17日 16:46
  • 175KB
  • 下载

c++中的extern “C”

比如说你用C 开发了一个DLL 库,为了能够让C ++语言也能够调用你的DLL 输出(Export) 的函数,你需要用extern "C" 来强制编译器不要修改你的函数名。 通常,在C 语言的头文...

C++中extern “C”含义深层探索

1.引言   C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C/C++ extern practices
举报原因:
原因补充:

(最多只允许输入30个字)