因为要看代码原因,需要了解下C&&C++的内容,下面是今天零星了解的几个点,后续不断补充.
#ifndef UTIL_HPP_
#define UTIL_HPP_
#endif
C&&C++中不能重复定义相同namespace下相同全局变量,类,或者函数.编译时不会报错,但是连接时会出现重复定义错误.一般头文件为了防止被引用多次导致重复定义错误,所以会通过这个方式避免.一个头文件被多个cpp文件或者cc文件引用的时候,最终连接的时候只会被连接一次,因为由这个#ifndef保护.
#extern
#extern "C" foo();
#extern "C" {
#include "xxx.h";
}
#extern主要是为了申明变量或者函数,但并不是定义(定义意味着分配内存),作用是变量或者方法级别防止重复定义的作用(不是排他,而是相容).两个修饰extern的相同名称的变量连接起来是合法的,不会报重复定义错误.具体定义初始化在其连接的其他文件中.
后面两个的主要是为了C++调用C的函数,C++为了做到方法重载,把方法名加上各个参数类型生成了中间方法名,供调用者查找.而C的调用是直接查找方法名,不带任何参数类型. 修饰了extern "C"的方法或者头文件,那么就告诉C++编译器,这个方法或者头文件里面的方法直接生成不带参数类型的中间方法名以供调用者查找.
void * ptr
无类型指针,void * 可以认为JAVA中的Object引用类型,这个用于C&C++通过malloc分配内存返回内存地址指针再合适不过了.可以向上转型,比如
void* ptr;
int* iPtr;
ptr=iPtr;
反过来不行
size_t
size_t在不同位数的操作系统中长度是不一样的(实际测试32位系统4字节,64系统8字节),使用size_t长度变量就隐藏了不同系统间对各个单位的不同长度定义.
typedef
简单的理解就是给一个类型或者struct或者复杂定义起一个别名.这个有些#define也能做到.但是typedef会有原始类型的类型检查,#define是纯粹的文本替换.这也就出现了编译期发现错误和运行期发现错误的区别.
分享到:
相关推荐
《C语言 + C++入门学习教材pdf版》是一套针对初学者精心编纂的教程,旨在帮助新手快速掌握这两种编程语言的基础知识。本教材包含了三本PDF书籍,内容覆盖了C语言和C++的核心概念,同时也包括了C++的标准函数库,这...
《Turbo C & C++ for Windows 集成实验与学习环境》是一款专为Windows操作系统设计的C语言和C++编程学习平台,尤其适合初学者入门。这款软件提供了丰富的功能,帮助用户在学习C和C++的过程中进行实践操作,提高编程...
### C语言及C++入门学习知识点汇总 #### 一、开始之前 **1.1 FAQ的概念** - **FAQ**:即“Frequently Asked Questions”,常见问题解答。它是一种高效的资源,帮助初学者快速找到答案,避免重复提问。本文档旨在为...
以下是对"C++入门学习例题"的相关知识点进行的详细说明。 1. **基础语法**:C++的基本语法与C语言相似,包括变量声明、数据类型(如int, float, char等)、运算符(如+,-,*,/等)、流程控制语句(如if,switch,...
【C++入门基础_30分钟入门教程】这篇教程旨在为初学者和有一定技术基础的人提供快速理解并深化C++知识的途径。C++是一种广泛应用的编程语言,它结合了过程化编程和面向对象编程,适用于操作系统、设备控制、数据库、...
《C++入门到精通》一书,作为C++学习者的重要参考资料,涵盖了C++语言从基础到高级的全面内容,适合不同层次的学习者。以下是从该书标题、描述、标签和部分内容中提炼的关键知识点: ### C++:一门复杂的编程语言 ...
这本书"这是一本C++入门书籍"显然是为了帮助初学者理解并掌握C++的基础概念和语法。C++的学习通常从以下几个方面开始: 1. **基础语法**:C++的基础包括变量声明、数据类型(如整型、浮点型、字符型等)、运算符...
【标题】"非C程序员C++入门自学教程" 提供了一条学习路径,旨在帮助那些没有C语言背景的初学者掌握C++编程语言。C++是面向对象编程(OOP)的重要代表,它在系统软件、应用软件、游戏开发、设备驱动等方面有着广泛的...
通过《C++入门经典》的学习,初学者可以逐步掌握C++语言的基础,并具备编写简单到中等复杂度程序的能力。书中的实例和练习题旨在帮助读者巩固理论知识,提升实际编程技能。无论你是计算机科学的学生,还是对编程感...
【C++入门级学习教程】 本教程是一份个人学习笔记,旨在从基础知识开始逐步深入讲解C++编程语言,包括内存管理、指针等核心概念,非常适合初学者和想要巩固C++基础的程序员。 ### 第一章:C/C++语言概论与结构 1....
### C/C++ 入门基础书籍名单解析 #### 一、引言 在软件开发领域,C 和 C++ 是两种非常重要的编程语言。C 语言以其简洁高效的特点被广泛应用于系统编程、嵌入式开发等领域;而 C++ 则继承了 C 的特性,并在此基础上...
1. **基础概念**:C++的起源,与C语言的关系,面向对象编程的基本理念。 2. **基本语法**:变量、常量、数据类型、运算符、流程控制语句(如if、switch、for、while)。 3. **函数**:定义、调用、参数传递、函数...
### C、C++入门学习知识点总结 #### 一、C/C++程序结构 - **文件类型**:每个C++或C程序通常分为两个文件:头文件和定义文件。 - **头文件**:用于保存程序的声明,后缀通常为`.h`。 - **定义文件**:用于保存...
在小甲鱼的C++入门课程中,学生可以学习到基本的语法结构,如变量、数据类型、运算符、控制流(如if语句和循环)、函数的使用等。此外,课程还会深入到面向对象编程的基本概念,如类的定义、对象的创建、继承、多态...
《C++编程从入门到精通》是一套全面深入学习C++编程语言的资源集合,旨在帮助初学者逐步掌握C++的精髓,同时也适用于有一定基础的程序员进行深化学习。本资源包涵盖C++的基础语法、高级特性以及实际应用,旨在帮助...
本书作为《C++入门经典》的第三版,对前两版进行了修订和更新,详细介绍了C++的各个方面。书中不仅包括了传统的C++编程概念,如数据类型、程序控制、函数、指针、调试、类、重载、继承、多态性、模板、异常和输入...
C语言+C++视频教程百度网盘下载C语言+C++视频教程百度网盘下载C语言+C++视频教程百度网盘下载C语言+C++视频教程百度网盘下载C语言+C++视频教程百度网盘下载
C++学习入门是一个系统的过程,涉及到许多重要的知识点和技术。首先,C++虽然与C语言有历史渊源,但它是一门独立的语言,有着独特的特性和编程范式,因此需要以全新的视角来学习。对于初学者,不应过于依赖C语言的...
《非C程序员C++入门自学教程》是一本专为非C语言背景的初学者设计的教程,旨在帮助他们快速掌握C++编程语言的基础知识。C++是C语言的一个扩展,它引入了面向对象编程(OOP)的概念,使得程序设计更为灵活且高效。本...