C++程序分析:DEBUG宏定义的影响

需积分: 15 1 下载量 160 浏览量 更新于2024-08-24 收藏 8.66MB PPT 举报
"C++³ÌÐòÉè¼Æ¡ª¡ªÌ·ºÆÇ¿" 本资源涉及的知识点主要集中在C++编程语言的基本概念和特性上,以及程序的预处理指令。以下是对这些知识点的详细说明: 1. C++预处理指令:程序中的`#define DEBUG`是一个预处理器指令,用于定义一个宏名为DEBUG。预处理器在编译器实际编译源代码之前处理源文件,这里的`#ifdef DEBUG`是一个条件编译指令,检查DEBUG是否已被定义。如果定义了DEBUG,那么包含在`#ifdef`和`#endif`之间的代码将被编译;如果未定义,则这部分代码将被忽略。在这个例子中,由于DEBUG被定义,所以`cout<<“a=“<<oct<<a<<“ b=“<<b<<endl;`这部分代码被执行,输出变量a和b的八进制值。 2. 主函数的声明:`void main(void)`是C++程序的主入口点。这里使用了旧式的C++声明,现代C++标准建议使用`int main()`或`int main(void)`,且返回类型应为int,尽管在某些编译器中不指定返回类型可能也能工作。 3. 变量声明与赋值:在程序中,声明了整型变量a、b和c,然后给a和b赋值为14和15。接着,c被赋值为a除以b的结果,根据整数除法规则,c的值为0。 4. 输出操作:`cout`是C++中的流插入运算符,用于向标准输出设备(通常是显示器)输出数据。`endl`是一个操纵符,用于插入一个换行符。`oct`和`dec`是数字基数转换操纵符,分别将输出的数字转换为八进制和十进制。 5. 运算符:程序展示了算术运算符 `/`(除法)的使用,其中整数除法会舍去小数部分,保留整数部分。 6. C++的发展历史:C++是由C语言发展而来的,它增强了C语言的功能,特别是引入了类和面向对象编程的概念,使其成为一个更强大的编程工具。C++保留了C语言的很多特性,如低级内存操作和高效的程序设计能力。 7. C语言特点:C语言因其结构化、灵活性、高效性和可移植性而受到广泛欢迎。它的运算符丰富,支持位运算,可以处理复杂的程序结构。同时,C语言的程序可以在不同类型的计算机上移植,只需很少或无需修改。 8. 学习C++的挑战:虽然C++语言强大,但对于初学者来说,其语法结构不够严格,可能导致调试困难。因此,深入理解C++的语法规则至关重要,以编写高质量和可维护的程序。 这个程序展示了C++预处理、基本数据类型、变量、运算符、输入/输出操作以及C++语言的一些基本特性。同时,还简要介绍了C++语言的历史和发展,以及C语言的主要特点。
2023-07-08 上传

int main(void) { const unsigned char *point; u16 i=0; delay_init(); //ÑÓʱº¯Êý³õʼ»¯ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//ÉèÖÃÖжÏÓÅÏȼ¶·Ö×éΪ×é2£º2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶ // uart_init(115200); //´®¿Ú³õʼ»¯Îª115200 LED_Init(); //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú // KEY_Init(); //°´¼ü³õʼ»¯ AT24CXX_Init(); //IIC³õʼ»¯ OLED_init(); point= &picture_tab[0]; TIM_OCInitTypeDef TIM_OCInitStructure; delay_init(); //ÑÓʱº¯Êý³õʼ»¯ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶ uart_init(115200); //´®¿Ú³õʼ»¯Îª115200 LED_Init(); //LED¶Ë¿Ú³õʼ»¯ TIM3_Int_Init(4999,7199);//10KhzµÄ¼ÆÊýƵÂÊ£¬¼ÆÊýµ½5000Ϊ500ms TIM4_PWM_Init(10000-1,72-1); //72M/72=1MHz¼ÆÊýƵÂÊ,ÖØ×°ÔØÖµ while(1) { OLED_ShowString(0,30,"21221054",16); OLED_ShowString(0,15,"2023/5/18",16); OLED_ShowChinese(0,0,0,16,1); OLED_ShowChinese(16,0,1,16,1); OLED_ShowChinese(32,0,2,16,1); delay_ms(1000); OLED_Refresh_Gram(); //¸üÐÂÏÔʾµ½OLED if(++i > 3) { LED1=!LED1;//ÌáʾϵͳÕýÔÚÔËÐÐ i=0; } while(1) { u16 u16tmp; u16tmp += 500; if(u16tmp > 10000) u16tmp=0; //³õʼ»¯TIM4 Channe3 PWMģʽ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //Ñ¡Ôñ¶¨Ê±Æ÷ģʽ:TIMÂö³å¿í¶Èµ÷ÖÆģʽ2 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //±È½ÏÊä³öʹÄÜ TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //Êä³ö¼«ÐÔ:TIMÊä³ö±È½Ï¼«ÐÔ¸ß TIM_OCInitStructure.TIM_Pulse = u16tmp; TIM_OC3Init(TIM4, &TIM_OCInitStructure); //¸ù¾ÝTÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèTIM4 OC3 LED2=!LED2; //LED3=!LED3; delay_ms(300); } } }这段代码问题如下:declaration may not appear after executable statement inblock,TIM OCINITTYPEDEF TIM OCINITSTRUCTURE,请修改这个问题

2023-06-09 上传