伪指令#pragma pack(n) 这个指令用于告诉编译器,程序里面的结构体按到n个字节对齐。
#pragma pack()取消自定义的字节对齐。
struct stA =>将按到结构体变量中,占最大字节来算,int占4个字节,所 { 以sizeof(stA) = 8; int a; 注意:如果#pragma pack(n),n超过了结构体中,最大的 char b; 字节,则按这个最大的字节为准。 };
class和struct的比较:
stA s = {1,'h'};合法,但是如果是class的话,不能这么做。
extern "c" 解析:
extern表示函数和变量的作用范围,表示可以在本模块或者其它模块使用。与它相反的是static表示只能在本模块里使用。
extern int a;表示声明一个变量,并没有为这个变量分配内存。
如果要在c++环境下调用c编译的函数,需要在c++头文件中引用c的头文件。
extern "c"
{
#include "cHeader.h" ,这样的话,在c++需找c的函数时,就是按照c编译器编译的形式,就可以找到,如果没有这样做的话,就是 按照 c++编译器规定的形式调用,例如调用这个函数foo(int,int),在c++中就是寻找foo_int_int,c 中就是寻找foo()。
} 注意:在c头文件中,对其外部提供函数,加上extern