C++,why
总阅读次
文章目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using namespace std;
int main()
{
class a
{};
cout << sizeof(a) << endl;
}为什么空类型占一个字节: https://blog.csdn.net/imcdragon/article/details/6882875
- 为什么空类占用1个字节,而空数组布占呢
https://bbs.csdn.net/topics/320170518
- c语言中的结构体中成员怎么不能直接初始化
http://bbs.itheima.com/forum.php?mod=viewthread&tid=158477
- 先搞清楚初始化和赋值
https://bbs.csdn.net/topics/390776522
- 为什么报错:
error C3863: array type 'char [20]' is not assignable
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using namespace std;
enum enReaderNumber : int //读写器编号枚举类型
{
ENRNINREADER, //进站读写器
ENRNVALUEREADER, //出站储值卡读写器
ENRNTOKENREADER, //出站单程票读写器
MAXENRN //枚举类型最大值
};
struct stReaderRunParam //读写器运行参数
{
char st_COMNumber[COMNumberLength]; //读写器串口号
int st_Baudrate; //读写器通讯波特率
int st_WorkType; //读写器工作类型
int st_LogSize; //读写器日志文件容量
};
stReaderRunParam m_RunParam[MAXENRN]; //读写器运行参数
int main()
{
//m_RunParam[1] = { "takethat",115200,2,1 };
m_RunParam[1].st_Baudrate = 115200;
m_RunParam[1].st_COMNumber = "tty/s3";
m_RunParam[1].st_LogSize = 10;
m_RunParam[1].st_WorkType = 1;
//memset(m_RunParam, 0x00, 3 * sizeof(stReaderRunParam));
cout << m_RunParam[3].st_Baudrate << endl;
return 0;
}
- 用VS查看结构体数组内存地址会
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using namespace std;
enum enReaderNumber : int //读写器编号枚举类型
{
ENRNINREADER, //进站读写器
ENRNVALUEREADER, //出站储值卡读写器
ENRNTOKENREADER, //出站单程票读写器
MAXENRN //枚举类型最大值
};
struct stReaderRunParam //读写器运行参数
{
int st_Baudrate; //读写器通讯波特率
char st_COMNumber[COMNumberLength]; //读写器串口号
int st_WorkType; //读写器工作类型
int st_LogSize; //读写器日志文件容量
};
stReaderRunParam m_RunParam[MAXENRN]; //读写器运行参数
int main()
{
//m_RunParam[1] = { "takethat",115200,2,1 };
m_RunParam[1].st_Baudrate = 115200;
strcpy(m_RunParam[1].st_COMNumber, "tty/s3");
m_RunParam[1].st_LogSize = 10;
m_RunParam[1].st_WorkType = 1;
//memset(m_RunParam, 0x00, 3 * sizeof(stReaderRunParam));
cout << m_RunParam[3].st_Baudrate << endl;
return 0;
}
https://www.cnblogs.com/tenjl-exv/p/7559674.html
1
2
3
4
5
6
7
8int CReader_CD10A::checkCard(void* i_CardData, void* i_TradeData)
{
int iRet = 0;
//iRet = m_cd->SZ_Check_Ticket(i_fd, *(stCheckTicketInfo*)i_CardData, *(stTradeInfo*)i_TradeData);
iRet = m_cd->CD_AccessStation(*(_stAccessStation*)i_CardData);
return iRet;
}
初始化和赋值的区别
https://blog.csdn.net/gxnu/article/details/1832462
- 函数传参, 结构体强转:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
using namespace std;
typedef unsigned char U8;
typedef struct stInitMode {
char chModeStartTime[15]; // IN,模式发生时间(YYYYMMDDhh24mmss);
U8 ucModeID; // IN,模式ID (参见第4分册“3.2.11 降级运营模式ID”)
}_stInitMode;
struct stInitReaderInfo_CD
{
char chLineNumber[3]; // IN,线路编码
char chStationNumber[3]; // IN,车站编码
char chEquipType[3]; // IN,设备类型
char chEquipNumber[4]; // IN,3bytes设备编号
U8 EquipWorkMode; // IN,设备工作模式(读写器工作模式:0x00——使用指令中的工作模式;0x10——ES;0x20——非付费区BOM;0x21——付费区BOM;0x22——TVM;0x23——TCM;0x24——PCA;0x40——进站AGM;0x41——出站AGM)
U8 DownWorkModenum; // IN,模式数量
char chRCodeBaudrate[12]; // IN,关联扫码枪通讯波特率
_stInitMode Mode[16];
// stInitMode_CD Mode[16];
char chRCodeCOM[10]; // IN,关联扫码枪串口号
char chModeStartTime[15]; // IN,模式发生时间(YYYYMMDDhh24mmss);
char chRCodeServerAddr[256]; // IN, 支付平台接入地址,例如http://182.140.238.35:61082/
U8 ucModeID; // IN,模式ID (参见第4分册“3.2.11 降级运营模式ID”)
bool Mark_IsUseQRcode; //take:add是否启用二维码 在读写器里传参标志需要
};
typedef struct stInitReaderInfo {
char chLineNumber[3]; // IN,线路编码
char chStationNumber[3]; // IN,车站编码
char chEquipmentType[3]; // IN,设备类型
char chEquipmentNumber[4]; // IN,3bytes设备编号
U8 ucEquipWorkMode; // IN,设备工作模式(读写器工作模式:0x00——使用指令中的工作模式;0x10——ES;0x20——非付费区BOM;0x21——付费区BOM;0x22——TVM;0x23——TCM;0x24——PCA;0x40——进站AGM;0x41——出站AGM)
U8 ucDownWorkModenum; // IN,模式数量
_stInitMode Mode[16];
//char chEquipmentID[17]; // OUT,16位PSAM卡ID
} _stInitReaderInfo;
typedef struct _stRCodeInfo {
char chRCodeCOM[10]; // IN,关联扫码枪串口号
char chRCodeBaudrate[12]; // IN,关联扫码枪通讯波特率
char chRCodeServerAddr[256]; // IN, 支付平台接入地址,例如http://182.140.238.35:61082/
} _stRCodeInfo;
void startReaderAFC(void* i_StartAFCData)
{
/****>>>>>>>>>>>>>>>>>>take:第一个参数结构体***>>>>>>>>>>>>>>>>>>>>>>>>>******************/
_stInitReaderInfo take_stInitReaderInfo;
strcpy(take_stInitReaderInfo.chLineNumber, ((stInitReaderInfo_CD*)i_StartAFCData)->chLineNumber);
strcpy(take_stInitReaderInfo.chStationNumber, ((stInitReaderInfo_CD*)i_StartAFCData)->chStationNumber);
strcpy(take_stInitReaderInfo.chEquipmentType, ((stInitReaderInfo_CD*)i_StartAFCData)->chEquipType);
strcpy(take_stInitReaderInfo.chEquipmentNumber, ((stInitReaderInfo_CD*)i_StartAFCData)->chEquipNumber);
take_stInitReaderInfo.ucEquipWorkMode = ((stInitReaderInfo_CD*)i_StartAFCData)->EquipWorkMode;
take_stInitReaderInfo.ucDownWorkModenum = ((stInitReaderInfo_CD*)i_StartAFCData)->DownWorkModenum;
//take_stInitReaderInfo.Mode = ((stInitReaderInfo_CD*)i_StartAFCData)->Mode;
memcpy(take_stInitReaderInfo.Mode, ((stInitReaderInfo_CD*)i_StartAFCData)->Mode, sizeof(take_stInitReaderInfo.Mode));//take:这样可以吗?
/***<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<take:第一个参数结构体**<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<******/
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>take:第二个参数*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
_stRCodeInfo *ptr_stRCodeInfo = (_stRCodeInfo*)malloc(sizeof(_stRCodeInfo));
strcpy(ptr_stRCodeInfo->chRCodeCOM, ((stInitReaderInfo_CD*)i_StartAFCData)->chRCodeCOM);
strcpy(ptr_stRCodeInfo->chRCodeBaudrate, ((stInitReaderInfo_CD*)i_StartAFCData)->chRCodeBaudrate);
strcpy(ptr_stRCodeInfo->chRCodeServerAddr, ((stInitReaderInfo_CD*)i_StartAFCData)->chRCodeServerAddr);
cout << take_stInitReaderInfo.Mode[0].chModeStartTime << endl;
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************************************************<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
// cout << ((test*)i_StartAFCData)->chEquipNumber << endl;
// cout<<((stInitReaderInfo_CD*)i_StartAFCData)->chEquipmentNumber;
}
int main()
{
stInitReaderInfo_CD temp[2];
// strcpy(temp[0].chEquipNumber_, "aa");
temp[0].EquipWorkMode = 34;
strcpy(temp[0].Mode[0].chModeStartTime, "201804-=18");
strcpy( temp[0].chLineNumber, "nu");
strcpy(temp[0].chStationNumber,"st");
strcpy(temp[0].chEquipType,"tp");
strcpy(temp[0].chEquipNumber, "chn");
temp[1] = { 0 };
startReaderAFC(&temp);
}
- 回车(CR)与换行(LF),即 ‘\r’与’\n’的区别
https://blog.csdn.net/u013540854/article/details/37593357
http://www.ruanyifeng.com/blog/2006/04/post_213.html
彻底搞定回车0d和换行0a
https://blog.csdn.net/e_wsq/article/details/72957218