[c++11]结构体字节对齐
时间:2019-10-22
本文章向大家介绍[c++11]结构体字节对齐,主要包括[c++11]结构体字节对齐使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
//测试c++中结构体的字节对齐
#include <iostream>
#include <cmath>
using namespace std;
void vsVersion();
//example 1
struct Node1
{
char a;
int b;
double c;
};
//example 2
struct Node2
{
char a;
int b;
char c;
};
//example 3
struct Node3
{
};
//example 4
struct Node4
{
char a;
int b;
static double c;
};
//example 5
struct Inside
{
int a;
double b;
float c;
};
struct Node5 {
char e[2];
int f;
short h;
struct Inside inside;
};
//example 6
struct Node6 {
char a;
int b;
float c;
double d;
int* p;
char* pc;
short e;
};
int main()
{
Node1 n1;
Node2 n2;
Node3 n3;
Node4 n4;
Node5 n5;
Node6 n6;
vsVersion();
//宏定义:https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros?redirectedfrom=MSDN&view=vs-2019
#ifdef _WIN64
cout << "--------x64----------------" << endl;
cout << "char:" << sizeof(char) << endl;
cout << "short:" << sizeof(short) << endl;
cout << "int:" << sizeof(int) << endl;
cout << "double:" << sizeof(double) << endl;
cout << "float:" << sizeof(float) << endl;
cout << "char *:" << sizeof(char *) << endl;
cout << "Node1 :" << sizeof(n1) << endl;
cout << "Node2 :" << sizeof(n2) << endl;
cout << "Node3 :" << sizeof(n3) << endl;
cout << "Node4 :" << sizeof(n4) << endl;
cout << "Node5 :" << sizeof(n5) << endl;
cout << "Node6 :" << sizeof(n6) << endl;
#else
cout << "--------x86----------------" << endl;
cout << "char:" << sizeof(char) << endl;
cout << "short:" << sizeof(short) << endl;
cout << "int:" << sizeof(int) << endl;
cout << "double:" << sizeof(double) << endl;
cout << "float:" << sizeof(float) << endl;
cout << "char *:" << sizeof(char*) << endl;
cout << "Node1 :" << sizeof(n1) << endl;
cout << "Node2 :" << sizeof(n2) << endl;
cout << "Node3 :" << sizeof(n3) << endl;
cout << "Node4 :" << sizeof(n4) << endl;
cout << "Node5 :" << sizeof(n5) << endl;
cout << "Node6 :" << sizeof(n6) << endl;
#endif
cout << "hello world" << endl;
return 0;
}
//确定IDE版本
void vsVersion()
{
if (_MSC_VER == 1921 or _MSC_VER == 1922 or _MSC_VER == 1923)
{
cout << "vs2019" << endl;
}
else if (_MSC_VER == 1910 or _MSC_VER == 1911 or _MSC_VER == 1912 or _MSC_VER == 1913 or _MSC_VER == 1914 or _MSC_VER == 1915 or _MSC_VER == 1916)
{
cout << "vs2017" << endl;
}
else
{
cout << "others" << endl;
}
}
原文地址:https://www.cnblogs.com/tailiang/p/11718814.html
- 有故事的微信小游戏“跳一跳”
- 机器学习敲门砖:任何人都能看懂的TensorFlow介绍
- 跟小编来体验一下微信小程序
- DeepVO:基于深度循环卷积神经网络的端到端视觉里程计
- 是人工智障还是蹭热度?我一定是抱走了假的二次元老婆
- 重庆日报:丹妮拉·鲁斯认为人工智能是人类的助手
- 深度学习系列(2):前向传播和后向传播算法
- 未来5年,什么样的人最抢手
- 腾讯AI Lab俞栋:AI的发展需要合作伙伴一起AI in ALL
- NLP+2vec︱认识多种多样的2vec向量化模型
- 深度学习数据集(一)
- 将Spring Boot应用程序部署到Bluemix
- Opencv学习(一)——安装配置遇到的问题
- The .NET of Tomorrow
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法