学习cc++技术小结

    技术2022-05-20  38

          伪指令#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                  

     


    最新回复(0)