c++ 常用的一些宏定义

#include<iostream>
#include <windows.h>
#include <string>
using namespace std;#define Conn(x,y) x##y   //表示x连接y
#define tochar(x) #@x //给x加上单引号,结果返回是一个const char
#define tostring(x) #x  //给x加双引号 返回char const *#define MEM_B(x)(*((byte*)(x))) //得到指定地址上的一个字节
#define MEM_W(x)(*((WORD*)(x))) //得到指定地址上的一个字  WORD 16-bit unsigned integer DWORD 32 - bit unsigned integer
#define OFFSETOF(type,field) ((size_t)& ((type*)0)->field)  //得到一个field在结构体(struct type)中的偏移量。
#define FSIZ(type,field) sizeof( ((type *) 0)->field )  // 得到一个结构体中field所占用的字节数 //得到一个变量的地址(word宽度)
#define B_PTR( var ) ( (byte *) (void *) &(var) )  
#define W_PTR( var ) ( (WORD *) (void *) &(var) )#define UPCASE( c ) ( ((c) >= 'a' && (c) <= 'z') ? ((c) - 0x20) : (c) ) //将一个字母转换为大写
#define INC_SAT( val ) (val = ((val)+1 > (val)) ? (val)+1 : (val)) //防止溢出的一个方法
#define ARR_SIZE( a ) ( sizeof( (a) ) / sizeof( (a[0]) ) ) //返回数组的个数//ANSI标准说明了五个预定义的宏名。它们是:
#define _LINE_ __LINE__ /*(两个下划线),对应%d*/
//_FILE_ /*对应%s*/
//_DATE_ /*对应%s*/
//_TIME_ /*对应%s*/struct Person 
{string name;int age;
};void test01()
{cout << Conn(123, 444) << endl; //123444cout << Conn("abc", "efg") << endl; //abcefgauto a2 = tochar(4);cout << a2 << endl;  // a2='4'cout << typeid(a2).name() << endl;auto a3 = tostring(43434);cout << a3 << endl; //a3="43434"cout << typeid(a3).name() << endl;int bTest = 0x123456; //0001 0010 0011 0100 0101 0110byte m = MEM_B((&bTest));cout << int(m) << endl;//86 = 0101 0110  一个字节8bitint n = MEM_W((&bTest));/*n=0x3456*/cout << int(n) << endl;   //13398  = 0011 0100 0101 0110  一个WORD 16bitstruct Person p = { "dsd",88 };cout << OFFSETOF(Person, name) << endl; //0cout << OFFSETOF(Person, age) << endl; //28cout << FSIZ(Person, age) << endl; //4cout << FSIZ(Person, name) << endl; //28int num = 97;cout << B_PTR(num) << endl;  // a 97cout << W_PTR(num) << endl;  //0019FD98cout << UPCASE('a') << endl; //65  = Aint num1 = 99;int num2 = 99999999999999999;cout << INC_SAT(num1) << endl; //100cout << INC_SAT(num2) << endl; //1569325056int arr[] = { 1,2,43,5 };int arr1[][4] ={{1, 2, 3, 5},{ 1,2,3,5 },};cout << ARR_SIZE(arr) << endl; //4cout << ARR_SIZE(arr1) << endl; //2int x = 0;int y = 10;if (y > x) {printf("Error: y is greater than x at line %d\n", _LINE_);}
}int main()
{	test01();system("pause");return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/218184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【毕业设计之Android系列】智能家居远程控制系统设计

智能家居远程控制系统设计 摘 要 该系统是一种基于Android平台的应用程序&#xff0c;可以通过网络连接实现对家居设备的远程控制。其主要功能包括家居设备的开关控制、温度调节、音乐播放、安防监控等。系统的设计需要考虑硬件、软件、数据传输、安全性和扩展性等因素&#xf…

Python基本语法及高级特性总结

1. Python基本语法 1.1 变量和数据类型 在Python中&#xff0c;变量不需要预先声明&#xff0c;可以直接赋值。Python是一种动态类型语言&#xff0c;变量的类型会根据赋值的对象自动确定。例如&#xff1a; a 10 # a是整数类型变量 b 3.14 # b是浮点数类型变量 c …

基于OHTPPS实现网站HTTPS访问

前言 笔者近期为网站配置HTTPS的域名&#xff0c;查找了大量方案&#xff0c;最近寻得一个不错的解决方式&#xff0c;通过OHTTPS获取免费的证书并部署到阿里云服务器上。 步骤 到OHTTPS官网注册账号 官方地址如下&#xff0c;读者可以先行到官网注册一下账号&#xff0c;笔…

第三十四课 电商控制台商品订单详情的整合

增删改查四个接口统一的规范 有5个接口 Add增 Delete 删除 Update 更新 查 按id查某个商品 findOne 查询所有 findAll 实现类实现5个接口 反射技术&#xff0c;反射到java bean当中的每一个属性。 Class.forName() 获取属性方法:getDeclaredFields() 构建增 删 查…

基于级联式逆残差网络的遥感图像轻量目标检测算法

源自&#xff1a;电子学报 作者&#xff1a;陈立 张帆 郭威 黄赟 李继中 “人工智能技术与咨询” 发布 摘 要 遥感场景下的高实时目标检测任务具有重要的研究价值与应用意义. 针对当前遥感图像目标检测模型由于目标多角度、排列密集以及背景复杂从而导致检测速度慢的…

Science Robotics封面文章:瑞士洛桑联邦理工学院研制仿生鳄鱼和仿生巨蜥机器人,走进非洲尼罗河

动物表现出多种多样的形态和大小&#xff0c;通常与它们所处的介质有关。它们可以游泳、爬行、行走、奔跑、跳跃、飞行和滑翔等。进化使它们复杂而有效地结合不同类型的运动来逃避捕食者、交配或寻找食物 。作为科学家去研究如此丰富的动物运动&#xff0c;可以了解自然界的一些…

外汇天眼:ACY Securities口碑爆炸疯狂滑点,你中枪了吗?

都说判断一个平台是否值得信赖投资&#xff0c;除了看它的监管牌照、创建年限&#xff0c;就是看它的口碑、声誉怎么样&#xff0c;因为即使平台拥有了正规的监管牌照、平台创立年限久远&#xff0c;同样会存在很多交易安全隐患&#xff0c;特别是平台出现大量客诉却一直不正面…

ubuntu 20.04 安装与切换多个版本cmake,安装多个版本gcc

1.安装多版本cmake 1)查看当前系统自带cmake版本及安装位置&#xff1a; ~$: cmake --version 如&#xff1a; cmake version 3.16.3 ~$: which cmake 如&#xff1a; /opt/cmake/cmake-3.16.3 2)下载对应的cmake&#xff0c;如&#xff1a; https://cmake.org/files/…

在vue3代码中,进行if判断的时候,使用值的时候忘记使用.value而导致的问题

问: 回答: 所以,我的代码中进行isAndroid的值的判断的时候,判断它是否是false的时候,需要加上isAndroid.value才能获取到,否则获取不到, 然而写法错误,却还是进入了安卓的判断, 问: 回答:

vue配置path路径别名

// vue.config.js const path require(path);//引入path模块 function resolve(dir) {return path.join(__dirname, dir) }默认代表src configureWebpack: {resolve: {extensions: [.js, .vue, .json],alias: {: resolve(src),~: process.cwd(),public: resolve(public),compo…

Chart 9 Adreno GPU的 OpenCL 扩展

文章目录 前言9.1 OS-dependent vendor extensions9.1.1 Performance hint (cl_qcom_perf_hint)9.1.2 Priority hint for context creation (cl_qcom_priority_hint)9.1.3 Recordable command queue (cl_qcom_recordable_queues)9.1.4 cl_qcom_protected_context9.1.5 cl_qcom_…

深入理解网络 I/O 多路复用:Epoll

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…

Odoo:行业领先的免费开源供应链管理系统

先进且开源的供应链管理系统和全球供应链协作优化方案 为满足复杂的供应链和库存管理要求&#xff0c;如今绝大多数企业都不得不部署多个供应链管理软件和库存管理系统软件。如何利用一个库存管理与供应链管理软件&#xff0c;跨地区、跨时区地管理现代供应链&#xff1f;Odoo…

Cocos Creator:坐标系

Cocos Creator&#xff1a;坐标系 坐标系节点位置坐标转换v3.8 实现原理&#xff08;不想了解可以直接跳过&#xff09;简单示例&#xff1a;&#xff08;干货or解决方案在这里&#xff01;&#xff09; 锚点缩放和旋转 总结心得 在 Cocos Creator 3.8 中&#xff0c;节点坐标系…

使用入耳耳机对耳朵有损害吗?入耳耳机和骨传导耳机哪款更值得入手?

由于入耳式耳机的传声原理&#xff0c;长时间使用是会对耳朵造成损害的&#xff0c;骨传导耳机相比与入耳耳机&#xff0c;不用入耳佩戴&#xff0c;还能在一定程度上保护听力&#xff0c;所以骨传导耳机更值得入手。 一、入耳耳机和骨传导耳机有什么不同 人的听觉系统分为搜…

lammps编译(2Aug2023、intel2020、rtx4070ti)

说明&#xff1a; [rootnode101 ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [rootnode101 ~]# gcc -v Using built-in specs. COLLECT_GCCgcc COLLECT_LTO_WRAPPER/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper Target: x86_64-redhat-lin…

修复漏洞:Diffie-Hellman Key Agreement Protocol 资源管理错误漏洞(CVE-2002-20001)

1、背景 在安全检测流程中&#xff0c;发现爆出这个漏洞 2、修复方案 echo "kexalgorithms curve25519-sha256,curve25519-sha256libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521" >> /etc/ssh/sshd_configsystemctl restart sshd

Vmd+lstm代码详解 完整代码数据可直接运行

项目视频讲解:Vmd+lstm时间序列预测分类回归预测代码详解 完整代码可直接运行_哔哩哔哩_bilibili 项目演示效果: 代码详解: # -*- coding: utf-8 -*- # 导入库pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple import pandas as pd import numpy as np fr…

QVTK 可视化

#ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>#include <vtkNew.h> // 智能指针 #include <QVTKOpenGLNativeWidget.h> #include <vtkCylinderSource.h> // 圆柱#include <vtkPolyDataMapper.h&g…