C++语言细节点
来源:互联网 发布:影楼美工设计教程 编辑:程序博客网 时间:2024/06/08 18:04
1.概述
最近写C++代码的时候发现一些小的细节点,写下来加深理解,以后也好查看.
2.C++编译问题
一般不应该在.h文件中声明全局变量,因为如果两个.cpp文件同时include该头文件后,那么就会报重定义问题.但我们确实需要在其他的cpp文件中使用该变量,解决办法是将这些变量定义在a.cpp文件中,在b.h文件中使用extern, 在c.cpp中可以include b.h ,编译好c后后 ,编译好a 然后将他们链接起来.
同样的全局的函数也是不能在头文件中定义,同样会报重定义的错误.解决办法跟上述类似.但是有一个例外,就是可以在.h文件中声明全局定义的inline 函数,因为在编译器就进行替换,所以不会在链接时报重定义的错误.
b.h
#include <stdio.h>void func(){ printf("i am the global func\n");}
a.cpp
#include <b.h>#include <stdio.h>void bfunc(){ func();}
#include <b.h>int main(){ printf("main func\n");}
3 声明函数的时候的关键字如static 参数的默认值都只需要在函数声明的时候给定,实现的时候不能在加static 和 默认值.
还有inline的声明必须跟着实现,而且声明和实现不能跨越两个文件,会报链接失败
阅读全文
0 0
- C++语言细节点
- C语言常见错误分析(基础细节面试点之一)
- 对C语言中sizeof细节的三点分析
- 对C语言中sizeof细节的三点分析
- c语言==常见问答细节点(19)
- C语言面试那点小事——C语言细节(1)
- c 语言细节
- c语言细节
- C语言细节问题
- C语言细节
- C语言细节
- C 语言细节
- C语言细节
- C语言细节
- C语言的细节!
- c语言细节知识点
- C语言编程细节
- C语言细节考察
- 选择排序
- Hibernate4 命名查询
- 第七周 项目一 建立顺序环形队列
- 刘明春总结《2017年11月2号》【连续第6天总结】
- Hibernate
- C++语言细节点
- oracle单引号和双引号用法
- 安卓单元测试全攻略,让代码测试一劳永逸
- dockerfile介绍
- discoz论坛模板的一些细节记录
- 关于安卓sdk 文件相关
- 关于Docker,你要知道的都在这了
- ACM训练半周总结—11月2日
- opencv学习笔记——鼠标操作