1. void* 可以指向任何类型的数据。在应用中,体现内存操作的意义。因此在lib发布的头文件中多使用void*类型,在实现文件中强制类型转换到自己定义的类型,实现封装的隐蔽性。
2. 引用其他文件中定义的全局变量。在定义全局变量的头文件中声明全局变量,并添加关键字extern,在相应.c文件中定义该全局变量,即赋值。之后在其他包含该头文件的文件中就可以使用该全局变量了。
3. 关于VC中Link: 点击编译按钮准备生成exe文件时,VC其实做了两 步工作,第一步,将每个.cpp(.c)和相应.h文件编译成obj文件;第二步,将工程中所有的obj文件进行LINK生成最终的.exe文件,那么错 误就有可能在两个地方产生,一个是编译时的错误,这个主要是语法错误,另一个是连接错误,主要是重复定义变量等。我们所说的编译单元就是指在编译阶段生成 的每个obj文件,一个obj文件就是一个编译单元,也就是说一个cpp(.c)和它相应的.h文件共同组成了一个编译单元,一个工程由很多个编译单元组 成,每个obj文件里包含了变量存储的相对地址等 。
2. 引用其他文件中定义的全局变量。在定义全局变量的头文件中声明全局变量,并添加关键字extern,在相应.c文件中定义该全局变量,即赋值。之后在其他包含该头文件的文件中就可以使用该全局变量了。
3. 关于VC中Link: 点击编译按钮准备生成exe文件时,VC其实做了两 步工作,第一步,将每个.cpp(.c)和相应.h文件编译成obj文件;第二步,将工程中所有的obj文件进行LINK生成最终的.exe文件,那么错 误就有可能在两个地方产生,一个是编译时的错误,这个主要是语法错误,另一个是连接错误,主要是重复定义变量等。我们所说的编译单元就是指在编译阶段生成 的每个obj文件,一个obj文件就是一个编译单元,也就是说一个cpp(.c)和它相应的.h文件共同组成了一个编译单元,一个工程由很多个编译单元组 成,每个obj文件里包含了变量存储的相对地址等 。