02,预处理指令

来源:互联网 发布:surge for mac官网 编辑:程序博客网 时间:2024/06/05 10:30

1.常用的预处理指令
    #include ...  包含头文件
    #define ...   进行宏定义
    #undef ...    取消宏定义
    #ifndef ...   如果没有定义
    #ifdef ...    如果定义
    #elif  ...    否则如果
    #else  ...    否则
    #endif ...    结束如果
    ... ...

#line 整数n(了解)
主要用于将下一行的行号设置为第n行;
主要用于调试阶段,可以确保整个调试过程中出错的行号一直保持不变;

#warning 字符串
主要用于产生一个警告信息

#error 字符串
主要用于产生一个错误信息

注意:
   #if - 主要用于在预编译阶段进行条件判断
   if  - 主要用于在运行阶段进行条件判断

#pragma GCC dependency 文件名
主要用于让当前文件依赖于指定的文件名,
如果指定文件的最后一次修改时间晚于当前文件,则产生警告信息;

如:
   vi show.c文件:
      void show(void)
      {
          printf("我是帅哥我怕谁\n");
      }
   vi main.c文件:
      #pragma GCC dependency "show.c"
      int main(void)
      {
          show();
          return 0;
      }

#pragma GCC poison 标识符
主要用于将后面指定的标识符设置为毒药,一旦使用则产生错误信息;
    
#pragma pack(整数n)
主要用于调整结构体的对齐和补齐方式;
结构体的对齐和补齐原则是为了提高存取数据的效率,
带来的缺点就是浪费内存空间,是一种典型的牺牲空间来换取时间的策略;

调整对齐和补齐方式的本质就是为了节省内存空间,但是会浪费时间;     

1.3 常用的预定义宏
   __FILE__ 获取当前宏所在的文件名    %s
   __LINE__ 获取当前宏所在的行号      %d
   __TIME__ 获取当前宏所在文件的最后一次编译时间  %s
   __DATE__ 获取当前宏所在文件的最后一次编译日期  %s
   ... ...

0 0
原创粉丝点击