在C语言编程中常遇到的几个问题
来源:互联网 发布:xp网络连接ip地址设置 编辑:程序博客网 时间:2024/05/21 22:47
------------以下是整理以前在C语言编程中遇到的问题------------------
1、C语言中,连接符/后面不能有空格。C语言中,连接符/后面不能有空格。
2、注意局部变量的生命周期,特别是指针变量作为函数实参时。
3、注意常量(指针、数据常量)是不允许修改的,如function("ADC0//0",(void *)100); 设原形为function(char *str,void *arg)不能修改"ADC0//0"。
4、可以把指针当作数据用,如上面,(void *)100是指针(地址),可以
int a;
a = (unsigned int)arg;//指针当作数据用,一般强制为int(不能是char,short),因为地址是32位的
a = *(unsigned int)arg;//取的内容,这里则得不到100值
若采用取内容方式,则int a=100;function("ADC0//0",(void *)&a);这样调用
指针当作数据用一般适合于基本类型数据(把32位地址看作数据),像结构体等就应该采用取内容方式了
注:int a=100;(void *)a则为指针100
指针当作数据用的好处:在传递无符号数时,不用担心局部变量生命周期结束所导致变量值丢失这个问题
因为这里是传指针,而指针当作数据用。
5、#define /的用法及#define本质理解,/在C中上行连接符,参考OSFile.c或testEnumMacro.c
6、枚举类型中,枚举值是常量(在函数外则是全局常量),参考OSFile.c或testEnumMacro.c
7、无符号数与有符号数的理解与注意问题(参考testSign.c):
无符号数:用原码表示uint8 tempU8;
有符号数:用补码表示(正数时与原码相等),如8位的0xff==-1,如int8 temp8=0xff;则a==-1==0xff
tempU8 = (uint8)temp8;则tempU8==0xff
就是说:无符号数、有符号数的值用非十进制数(常用十六进制数)还表示是一样的,只是十进制数不同,
如0xff,无符号数、有符号数都==0xff,十进制则:无符号数==255,有符号数==-1
8、调试时,用来观察的变量一般定义为volatile类型的局部数组变量或全局变量
(非volatile类型的变量有时反应不出真实值)
中断程序会用到的全局变量一般也定义为volatile类型
volatile类型变量会占用多一些程序空间(非volatile类型一般被编译器优化了,所以占的程序空间较小)
9、不要滥用开、关中断函数。
OS_ENTER_CRITICAL和OS_EXIT_CRITICAL主要用于临界段的保护
其它的共享资源的互斥条件的满足一般通过信号量来保证
- 在C语言编程中常遇到的几个问题
- MathType中常遇到的几个问题
- C/C++编程中常遇到的问题
- 在stm32开发过程中常遇到的C语言知识小概括
- C++编程中常遇到的问题
- 技术人员在面试中常遇到的问题
- c语言中常字符串处理的函数
- C语言中常数的数据类型
- c语言中常常用到的宏
- C语言中常犯的一个错误
- 在使用angularjs时遇到的几个问题
- 在写Javaweb时遇到的几个问题。
- java中常被忽略的几个问题
- VS2008 MFC中常出现的几个问题
- sqlserver2000在安装过程中常遇到的问题
- 在android中常常会遇到与context有关的内容
- Hadoop 在使用过程中常遇到的问题
- 关于c语言中printf的几个问题
- Windows 7的30个新特性大揭秘
- c#中字符串分割
- 关于C++中extern "C"{}
- 关于flush
- C++中的virtual函数在继承的类中需要实现
- 在C语言编程中常遇到的几个问题
- Oracle sqlplus远程连接数据库
- linux中常用C/C++一些头文件的作用
- 什么是宏?
- 关于c++的静态数据(函数)成员的理解
- 深入理解Javascript闭包
- 关于字符串中的""与NULL
- 关于realloc
- 关于sizeof与strlen