您的位置:首页 > 编程语言 > C语言/C++

Cpp Primer杂记–extern const的声明注意

2016-07-21 23:47 357 查看
Cpp Primer杂记–extern const的声明注意

结论:在用extern const 时,在.h文件中对const 的 object 进行的一些非声明操作在链接时会认为是定义而可编译而无法链接(重定义).

解释:

错误代码:

这里多出file_2.h 嵌套在file_1.h中再include到main里,那么如果在file_2.h对bufSize进行了一些非声明操作会导致其的重定义.vs2015_Pro 出现:fatal error LNK1169.

//file_1.h
#include "file_2.h"
extern const int bufSize;
//file_2.h
extern const int bufSize = 5;
//main.c
#include "file_1.h"
int main()
{
}


或者file_2.h改为

//file_2.h
int get_bufSize(void)
{
return bufSize;
}


正确代码:

将定义一定写到.cpp中

#include "file_2.h"
extern const int bufSize;
//file_2.h
extern const int bufSize;
//file_2.cpp
extern const int bufSize = 5;
//main.c
#include "file_1.h"
int main()
{
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LNK1169 cpp