程序员之---C语言细节19(来找茬,由/* */ 引起的凝视错误)
2024-09-01 03:18:02
主要内容:由/* */ 引起的凝视错误
有4处凝视错误
#include <stdio.h>
#define N 10
//使用以下宏定义的凝视
#define BSC //
#define BMC /*
#define EMC */ BSC daewawe
BMC fewafewa EMC //凝视优先于宏定义被预处理。当展开宏之前凝视已经处理完成,这是再展开宏出现// /**/就会出错 // 不知道你有没有看出以下凝视中那里除了问题
int main()
{ /*dewag
int test; // 这里是典型的凝视错误。少了一个凝视的下半部分,从开头的/*到以下遇到的第一个右凝视符曾经,他们之间都被凝视。
printf("an error\n"); //造成int test; printf();语句都被凝视
/*dafewageawgeawg測啊測 */ int/**/b; //int和b之间没有空格,这里之所以不会出错是由于凝视/**/被空格替代,证明方式例如以下
# define r 1 //#和define之间能够空格
#/*ee*/define/**fea/int/*feagea*/INT_32 in/**/t a; int i = r;
int *p = i
int j = i/*p; // 编译器吧/* 当成凝视的一部分,注意这个细节/*之间没有空格就当成凝视的前半部分了 // int test; \
hahahha 这个凝视是正确的哦,\有连接性。vc中\后不能有空格,在gcc、mingw5中能够有
// 使用"//"凝视方法有一个移植性问题。所以採用以下凝视方法是有它的道理的
#if 0
// 这里不知道怎么測试了
void* t;
p = N * sizeof((int)*t); // 这里不是把未知类型t转换成int型。而是int长度乘以
#endif
return 0;
}
总结:
1、凝视应当准确、易懂、防止有二义性,错误的凝视有害无益
2、一目了然的语句不加凝视
3、全局数据(全局变量、常量定义等)必需要加凝视
4、凝视採用英文。尽量避免在凝视中使用缩写。由于不一定全部的编译器都能显示中文,你的代码不一定是懂中文的人看
5、数值单位一定要凝视
6、变量范围给出凝视
最新文章
- appium常用方法整理
- MySQL选择合适的数据类型
- 用Object字面量来代替swtich/if...else
- Ruby on Rails Tutorial 第一章 之 搭建开发环境
- SQL Cursor(游标)
- JavaScript框架设计 第14章 动画引擎
- centos 64bit 安装与升级 chrome的方法
- 将less编译成css的gulp插件
- linux 删除和安装java
- php多图合并
- 怎样将MySQL数据库上传到服务器
- Algorithm -->; 快速排序
- php插入mysql中文数据出现乱码
- jquery 第四章
- 对于eclipse building workspaces 慢的问题,解决方法
- 深入React技术栈之初入React世界
- python 变量名的规范
- C程序模拟实现银行家算法
- js获取url 参数
- python学习笔记(四)---python不能输出中文问题