1.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
using namespace std;

int main()
{
class a
{};

cout << sizeof(a) << endl;



}

  1. https://blog.csdn.net/pingingchen/article/details/44594261

  2. 为什么空类型占一个字节: https://blog.csdn.net/imcdragon/article/details/6882875

  3. 为什么空类占用1个字节,而空数组布占呢
    https://bbs.csdn.net/topics/320170518

  4. c语言中的结构体中成员怎么不能直接初始化
    http://bbs.itheima.com/forum.php?mod=viewthread&tid=158477

  5. 先搞清楚初始化和赋值
    https://bbs.csdn.net/topics/390776522

  6. 为什么报错: 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
    #include<iostream>
    using namespace std;
    #define COMNumberLength 20

    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;

    }
  7. 用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
    #include<iostream>
    #include <string.h>
    using namespace std;
    #define COMNumberLength 20

    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

9.

1
2
3
4
5
6
7
8
int 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;
}
  1. https://blog.csdn.net/u013687632/article/details/78616495

  2. c语言与指针
    https://blog.csdn.net/cooljune/article/details/18809179

初始化和赋值的区别
https://blog.csdn.net/gxnu/article/details/1832462

  1. 函数传参, 结构体强转:

    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
    #define  _CRT_SECURE_NO_WARNINGS
    #include<iostream>
    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);


    }
  2. 回车(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

  • nobody
1
2
3
4
5
此处填入服务端要监听的端口。需要选择 1024 或以上的端口号,否则启动 ss-server 时将会需要 root 权限,而默认的服务文件则是以 nobody 用户启动 Shadowsocks 的。

如需选用低于 1024 的端口,也可执行命令 sudo setcap 'cap_net_bind_service=+ep' /usr/bin/ss-server 赋予相应权限,后续就可以使用 nobody 用户或普通用户启动 Shadowsocks。

或执行 systemctl edit shadowsocks-libev 命令,并输入以下内容:

Why are ports below 1024 privileged? [closed]

  1. 用root打开vscode

code –user-data-dir=”~/.vscode-root”

  1. How can I stop being prompted to unlock the ‘default’ keyring on boot?

local/share/keyrings/ and delete Default_keyring.keyring. Then, to make login.keyring default, open default in a text editor and change its text to login.

How can I stop being prompted to unlock the ‘default’ keyring on boot?

pacman

pacman

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
[pc ~]# pacman -Syyu
error: could not register 'core' database (database already registered)
:: Synchronizing package databases...
core
extra 165.3 KiB 599 KiB/s 00:00 [##################################################] 100%
community 1849.7 KiB 6.14 MiB/s 00:00 [##################################################] 100%
multiliby 7.1 MiB 10.2 MiB/s 00:01 [##################################################] 100%
:: Some packages should be upgraded first... 180.5 KiB 2.94 MiB/s 00:00 [##################################################] 100%
resolving dependencies...
looking for conflicting packages...

Packages (3) base-3-2 manjaro-keyring-20220514-2 manjaro-system-20220727-1

Total Download Size: 0.54 MiB
Total Installed Size: 0.71 MiB
Net Upgrade Size: 0.54 MiB

:: Proceed with installation? [Y/n] Y
:: Retrieving packages...
manjaro-keyring-20220514-2-any
(3/3) checking keys in keyring [##################################################] 100%
(3/3) checking package integrity [##################################################] 100%
error: manjaro-keyring: signature from "Mark Wagie <mark@manjaro.org>" is unknown trust
:: File /var/cache/pacman/pkg/manjaro-keyring-20220514-2-any.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n

......
......
......

error: timeshift: signature from "Mark Wagie <mark@manjaro.org>" is unknown trust
:: File /var/cache/pacman/pkg/timeshift-22.06.5-1-x86_64.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n]
error: failed to commit transaction (invalid or corrupted package)
Errors occurred, no packages were upgraded
1
2
3
+
If you are not concerned about package signing, you can disable PGP signature checking completely. Edit /etc/pacman.conf to have the following lines under [options]:

SigLevel = Never
#LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required

1
2
仍然报错

:: File /var/cache/pacman/pkg/systemd-libs-251.4-1-x86_64.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n] y
error: systemd: signature from “Mark Wagie mark@manjaro.org“ is unknown trust
:: File /var/cache/pacman/pkg/systemd-251.4-1-x86_64.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n] y
error: apparmor: signature from “Mark Wagie mark@manjaro.org“ is unknown trust
…..
….,
….
:: File /var/cache/pacman/pkg/timeshift-22.06.5-1-x86_64.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n]
error: failed to commit transaction (invalid or corrupted package)
Errors occurred, no packages were upgraded.










  1. C++动态库编译连接一个C语言静态库,调用崩溃
    解决:
    在C静态库,每个函数逐个再封装一层函数,并且在外面嵌套一层extern c

===

what ever

Fork me on GitHub