.c是.cpp语法降级自动生成的,项目晚点上传,还要解决个工具链一键部署问题
复制代码
降级后:
- #include "Ai8051U.h"
- #undef main
-
- struct Person {
- const char * name;
- void *const * vptr;
- };
-
- struct Zhao {
- struct Person D_2900;
- };
-
- struct Qian {
- struct Person D_2940;
- };
-
- struct Sun {
- struct Person D_2956;
- };
-
- struct Li {
- struct Person D_2976;
- };
-
- void say_hello(struct Person *);
- const char* Person_get_name(struct Person * const);
- int cpp2c_main(void);
- void Zhao_ctor(struct Zhao * const);
- void Person_say(struct Person * const);
- void Person_ctor(struct Person * const, const char *);
- void Qian_ctor(struct Qian * const);
- void Sun_ctor(struct Sun * const);
- void Li_ctor(struct Li * const);
- void Li_say(struct Li * const);
- void delay_us(uint16_t);
- void delay_ms(uint16_t);
- void PORT3_Init(void);
- void UART1_Init(void);
- void UART1_SendByte(uint8_t);
- void UART1_SendBuffer(uint8_t *, uint8_t);
- void UART1_SendString(char *);
- void UART1_RecvPolling(void);
-
- static void *const vtbl_Zhao_v[] = { 0, 0, (void*)Person_say };
-
- static void *const vtbl_Qian_v[] = { 0, 0, (void*)Person_say };
-
- static void *const vtbl_Sun_v[] = { 0, 0, (void*)Person_say };
-
- static void *const vtbl_Li_v[] = { 0, 0, (void*)Li_say };
-
- static void *const vtbl_Person_v[] = { 0, 0, (void*)Person_say };
-
- void say_hello(struct Person * p)
- {
- void *t_1;
-
- t_1 = Person_get_name (p);
- UART1_SendString (t_1);
- UART1_SendString (" Hello World\r\n");
- }
-
- const char* Person_get_name(struct Person * const this)
- {
- const char * D_3140;
-
- D_3140 = this->name;
- return D_3140;
- }
-
- int cpp2c_main(void)
- {
- int D_3142;
- struct Zhao zhao;
- struct Qian qian;
- struct Sun sun;
- struct Li li;
- struct Person * people[4];
- int i;
- int P2_0_1;
- int t_2;
- struct Person *t_3;
- struct Person *t_4;
- struct Person *t_5;
- void *const *t_6;
-
- Zhao_ctor (&zhao);
- Qian_ctor (&qian);
- Sun_ctor (&sun);
- Li_ctor (&li);
- P2M0 = 255;
- P3M1 = 0;
- P3M0 = 128;
- P3M1 = 0;
- P2 = 15;
- UART1_Init ();
- UART1_SendString ("1234567890\n");
- people[0] = &zhao.D_2900;
- people[1] = &qian.D_2940;
- people[2] = &sun.D_2956;
- people[3] = &li.D_2976;
- bb_D_3096:
- P2_0_1 = P2;
- t_2 = ~P2_0_1;
- P2 = t_2;
- i = 0;
- goto bb_D_3095;
- bb_D_3094:
- t_3 = people[i];
- t_4 = people[i];
- t_5 = people[i];
- t_6 = t_5->vptr;
- ((void (*)(struct Person *))(t_4->vptr[0])) (t_3);
- i = i + 1;
- bb_D_3095:
- if (i <= 3) goto bb_D_3094; else goto bb_D_3092;
- bb_D_3092:
- delay_ms (1000);
- goto bb_D_3096;
- D_3142 = 0;
- return D_3142;
- D_3142 = 0;
- return D_3142;
- }
-
- void Zhao_ctor(struct Zhao * const this)
- {
- void *t_1;
- void *const *t_2;
-
- t_1 = &this->D_2900;
- Person_ctor (t_1, "小赵");
- t_2 = vtbl_Zhao_v + 2;
- this->D_2900.vptr = t_2;
- }
-
- void Person_say(struct Person * const this)
- {
- say_hello (this);
- }
-
- void Person_ctor(struct Person * const this, const char * n)
- {
- void *const *t_1;
-
- t_1 = vtbl_Person_v + 2;
- this->vptr = t_1;
- this->name = n;
- }
-
- void Qian_ctor(struct Qian * const this)
- {
- void *t_1;
- void *const *t_2;
-
- t_1 = &this->D_2940;
- Person_ctor (t_1, "小钱");
- t_2 = vtbl_Qian_v + 2;
- this->D_2940.vptr = t_2;
- }
-
- void Sun_ctor(struct Sun * const this)
- {
- void *t_1;
- void *const *t_2;
-
- t_1 = &this->D_2956;
- Person_ctor (t_1, "小孙");
- t_2 = vtbl_Sun_v + 2;
- this->D_2956.vptr = t_2;
- }
-
- void Li_ctor(struct Li * const this)
- {
- void *t_1;
- void *const *t_2;
-
- t_1 = &this->D_2976;
- Person_ctor (t_1, "小李");
- t_2 = vtbl_Li_v + 2;
- this->D_2976.vptr = t_2;
- }
-
- void Li_say(struct Li * const this)
- {
- void *t_1;
-
- t_1 = &this->D_2976;
- Person_say (t_1);
- UART1_SendString ("小李:大人,时代变了!\n");
- }
-
- void delay_us(uint16_t us)
- {
- unsigned char retval_1;
-
- bb_D_3102:
- us = us + 65535;
- retval_1 = us != 0;
- if (retval_1 != 0) goto bb_D_3102; else goto bb_D_3100;
- bb_D_3100:
- ;
- }
-
- void delay_ms(uint16_t ms)
- {
- unsigned char retval_2;
- unsigned char retval_3;
-
- uint16_t i;
- bb_D_3112:
- i = 4000;
- goto bb_D_3110;
- bb_D_3111:
- bb_D_3110:
- i = i + 65535;
- retval_2 = i != 0;
- if (retval_2 != 0) goto bb_D_3111; else goto bb_D_3109;
- bb_D_3109:
- ms = ms + 65535;
- retval_3 = ms != 0;
- if (retval_3 != 0) goto bb_D_3112; else goto bb_D_3107;
- bb_D_3107:
- ;
- }
-
- void PORT3_Init(void)
- {
- unsigned char vol_4;
- unsigned char vol_5;
- unsigned char vol_6;
-
- vol_4 = P3;
- P3 = 255;
- vol_5 = P3M0;
- P3M0 = 0;
- vol_6 = P3M1;
- P3M1 = 0;
- }
-
- void UART1_Init(void)
- {
- int P_SW1_7_1;
- int t_2;
- int AUXR_8_3;
- int t_4;
- int AUXR_9_5;
- int t_6;
- int AUXR_10_7;
- int t_8;
- int AUXR_11_9;
- int t_10;
- int SCON_12_11;
- signed char SCON_13_12;
- int t_13;
- int t_14;
- unsigned char t_15;
-
- P_SW1_7_1 = P_SW1;
- t_2 = P_SW1_7_1 & 63;
- P_SW1 = t_2;
- AUXR_8_3 = AUXR;
- t_4 = AUXR_8_3 | 1;
- AUXR = t_4;
- AUXR_9_5 = AUXR;
- t_6 = AUXR_9_5 & 247;
- AUXR = t_6;
- AUXR_10_7 = AUXR;
- t_8 = AUXR_10_7 | 4;
- AUXR = t_8;
- TM2PS = 0;
- TH2 = 255;
- TL2 = 204;
- AUXR_11_9 = AUXR;
- t_10 = AUXR_11_9 | 16;
- AUXR = t_10;
- REN = 1;
- SCON_12_11 = SCON;
- SCON_13_12 = (signed char) SCON_12_11;
- t_13 = SCON_13_12 & 63;
- t_14 = t_13 | 64;
- t_15 = (unsigned char) t_14;
- SCON = t_15;
- TI = 1;
- u8UART1RxCount = 0;
- }
-
- void UART1_SendByte(uint8_t dat)
- {
- unsigned char retval_14;
- int TI_15_1;
-
- goto bb_D_3121;
- bb_D_3122:
- bb_D_3121:
- TI_15_1 = TI;
- retval_14 = TI_15_1 == 0;
- if (retval_14 != 0) goto bb_D_3122; else goto bb_D_3120;
- bb_D_3120:
- TI = 0;
- SBUF = dat;
- }
-
- void UART1_SendBuffer(uint8_t * dat, uint8_t size)
- {
- unsigned char retval_17;
- int t_2;
- int size_18_3;
- uint8_t *dat_16_1;
-
- goto bb_D_3128;
- bb_D_3129:
- dat_16_1 = dat;
- dat = dat_16_1 + 1;
- t_2 = *dat_16_1;
- UART1_SendByte (t_2);
- bb_D_3128:
- size_18_3 = size;
- size = size_18_3 + 255;
- retval_17 = size_18_3 != 0;
- if (retval_17 != 0) goto bb_D_3129; else goto bb_D_3127;
- bb_D_3127:
- ;
- }
-
- void UART1_SendString(char * str)
- {
- unsigned char retval_20;
- signed char c;
- char *str_21_2;
-
- goto bb_D_3135;
- bb_D_3136:
- c = (unsigned char) c;
- UART1_SendByte (c);
- bb_D_3135:
- str_21_2 = str;
- str = str_21_2 + 1;
- c = *str_21_2;
- retval_20 = c != 0;
- if (retval_20 != 0) goto bb_D_3136; else goto bb_D_3134;
- bb_D_3134:
- ;
- }
-
- void UART1_RecvPolling(void)
- {
- unsigned char retval_22;
- int RI_23_1;
- int u8UART1RxCount_25_3;
- int t_4;
- int t_5;
- int SBUF_26_6;
-
- RI_23_1 = RI;
- retval_22 = RI_23_1 == 0;
- if (retval_22 != 0) goto bb_D_3155; else goto bb_D_3156;
- bb_D_3155:
- return;
- bb_D_3156:
- RI = 0;
- u8UART1RxCount_25_3 = u8UART1RxCount;
- t_4 = u8UART1RxCount_25_3 + 1;
- u8UART1RxCount = t_4;
- t_5 = (int) u8UART1RxCount_25_3;
- SBUF_26_6 = SBUF;
- pu8UART1RxBuffer[t_5] = SBUF_26_6;
- if (u8UART1RxCount > 15) goto bb_D_3157; else goto bb_D_3158;
- bb_D_3157:
- u8UART1RxCount = 0;
- goto bb_D_3159;
- bb_D_3158:
- bb_D_3159:
- ;
- }
-
- void main(void)
- {
- cpp2c_main();
- }
-
复制代码
|