zoukankan      html  css  js  c++  java
  • #pragma用法

    #pragma是一种预处理指令,作用是设定编译器的状态或者是指示编译器完成一些特定的动作。

    其格式一般为:#pragma Para。其中Para为参数。下面是一些常见用法。

    1、message

    ——在编译信息输出窗口中输出相应信息。

    例:#ifdef _X86

    #pragma message("_X86 macro activated!")

    #endif

    2、once

    ——保证头文件只被编译一次

    #pragma once与#ifndef / #define / endif 区别:

    1)#pragma once与编译相关,移植性差,不过现在基本上每个编译器都有这个定义;

    2)#pragma once如果头文件有多份拷贝,不能保证它们不被重复包含;

    3)#ifndef / #define / endif 是C++语言相关,所有支持C++语言的编译器都有效,移植性好;

    4)#ifndef / #define / endif 通过宏定义避免文件多次编译,这不仅保证同一文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包含。

    3、warning

    ——修改编译器的警告消息的行为

    #pragma warning(push)--保存所有告警信息的现有告警状态

    #pragma warning(disable:4507 34)--不显示4507和34号警告信息

    #pragma warning(once:4835)--4835号警告信息仅报告一次

    #pragma warning(error:164)--把164号警告信息作为一个错误

    #pragma warning(disable:4507 34; once:4835; error:164)--综上

    #pragma warning(pop)--向栈中弹出最后一个告警信息,在入栈和出栈间所作的一切改动取消

    4、comment

    ——将一个注释记录放入一个对象文件或可执行文件中

    指令格式:#pragma comment(comment-type [, "comment-string"])

    comment-type是一个预定义标识符,指定注释类型,是compiler、exestr、lib、linker之一;

    comment-string是一个为comment-type提供附加信息的字符串。

    最常用的是:#pragma comment(lib, "*.lib")--链接指定库

    5、pack

    ——设置字节对齐长度

    实际使用规则:结构、联合或类的数据成员,第一个放在偏移为0的地方,以后每个数据成员的对齐,按照#pragma pack指定的数值和这个数据成员自身长度中,比较大的那个进行。但是当前者设置的值等于或超过最长数据成员的长度时,这个值的大小将不产生任何效果。而 结构整体的对齐,则按照结构体中最大的数据成员和#pragma pack指定值之间较小的那个进行。

    #pragma pack(show)--以警告信息的形式显示当前字节对齐的值

    #pragma pack(push)--将当前字节对齐值压入编译栈栈顶

    #pragma pack(n)--将当前字节对齐值设为n

    #pragma pack(push, n)--综上两句

    #pragma pack(pop)--将编译栈栈顶的字节对齐值弹出并设为当前值

    #pragma pack()--将当前字节对齐值设为默认值(通常是8)


  • 相关阅读:
    tensorflow 2.0 学习 (十) 拟合与过拟合问题
    tensorflow 2.0 学习 (九) tensorboard可视化功能认识
    tensorflow 2.0 学习 (八) keras模块的认识
    tensorflow 2.0 学习 (七) 反向传播代码逐步实现
    tensorflow 2.0 学习 (六) Himmelblua函数求极值
    tensorflow 2.0 学习 (五)MPG全连接网络训练与测试
    arp协议简单介绍
    Pthread spinlock自旋锁
    线程和进程状态
    内核态(内核空间)和用户态(用户空间)的区别和联系·
  • 原文地址:https://www.cnblogs.com/jkred369/p/4727450.html
Copyright © 2011-2022 走看看