程序员之---C语言细节19(来找茬,由/* */ 引起的凝视错误)
主要内容:由/* */ 引起的凝视错误
有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、变量范围给出凝视
程序员之---C语言细节19(来找茬,由/* */ 引起的凝视错误)的更多相关文章
- 程序员之---C语言细节12(指针和数组细节,"//"的可移植性说明)
主要内容:指针和数组细节,"//"的可移植性说明 #include <stdio.h> int main(int argc, char **argv) { int a[ ...
- 程序员之---C语言细节22(函数返回指针注意事项<悬空指针>、查看进程能够分配的内存大小)
主要内容:函数返回指针注意事项<悬空指针>.查看进程能够分配的内存大小 #include <stdio.h> char * favorite_fruit() { static ...
- 程序员之---C语言细节20(符号和有符号之间转换、两数相加溢出后数值计算)
主要内容:无符号和有符号之间转换.两数相加溢出后数值计算 #include <stdio.h> /* 这个函数存在潜在漏洞 */ float sum_elements(float a[], ...
- 程序员之--C语言细节13(二维数组和指针,&*a[i][0]的理解,数组1[e]和e[1]非常可能你没见过)
主要内容:二维数组和指针.&*a[i][0]的理解.数组1[e]和e[1] #include <stdio.h> #define NUM_ROWS 10 #define NUM_C ...
- 程序员之---C语言细节24(段错误、类型提升、sizeof 'A')
主要内容:段错误.类型提升.sizeof 'A' #include <stdio.h> int main() { union test{ char a[10]; int b; }u; i ...
- 程序员之---C语言细节18(一些奇怪表达式)
主要内容:一些奇怪表达式 #include <stdio.h> #define N 10 int main() { int a = 1; int *q = &a; int p = ...
- .Net 程序员面试 C# 语言篇 (回答Scott Hanselman的问题)
过去几年都在忙着找项目,赶项目,没有时间好好整理深究自己在工作中学到的东西.现在好了,趁着找工作的这段空余时间,正好可以总结和再继续夯实自己的.Net, C#基本功.在05年的时候,Scott Han ...
- 10个足以让你成为更优秀的程序员的C语言资源
一些人觉得编程无聊,一些人觉得它很好玩.但每个程序员都必须紧跟编程语言的潮流.大多数程序员都是从C开始学习编程的,因为C是用来写操作系统.应用程序最常用的语言. · C编程笔记 这些是华盛顿实验学院C ...
- 黑马程序员——经典C语言程序设计100例
1.数字排列 2.奖金分配问题 3.已知条件求解整数 4.输入日期判断第几天 5.输入整数进行排序 6.用*号显示字母C的图案 7.显示特殊图案 8.打印九九口诀 9.输出国际象棋棋盘 10.打印楼梯 ...
随机推荐
- 查看tomcat启动文件都干点啥---server对象
在上一章查看tomcat启动文件都干点啥---Catalina.java中说道了构造Server,,这次尝试着说一下Tomcat中Server的内容,首先看一下org.apache.catalina. ...
- MySQL 三节点企业版
https://promotion.aliyun.com/ntms/act/rds/mysqlenterprise.html
- What is Mocking?
Mocking is primarily used in unit testing. An object under test may have dependencies on other (comp ...
- 设计模式之工厂模式之工厂方法(php实现)
github: git@github.com:ZQCard/design_pattern.git /** * 工厂方法 * 使用开闭原则来分析下工厂方法模式.当有新的产品产生时,只要按照抽象产品角色. ...
- vim常用操作之复制剪切粘贴,注释取消注释,多行缩进等
进入vim按下v键,选择要操作的对象 按下y复制,d剪切,p粘贴 >缩进,<取消缩进 按下esc退出操作 按下ctrl+v,选择要操作对象, 按下大写I,写入注释符号,按下d取消注释 按下 ...
- Python-使用Magellan进行数据匹配总结
参考:http://www.biggorilla.org/zh-hans/walkt/ 使用Magellan进行数据匹配过程如下: 假设有两个数据源为A和B, A共有四列数据:(A_Column1,A ...
- Android NDK生成共享库和静态库
Date: 2014-03-14 Title: Compile Android Native Binary And Library Published: true Type: post Tags: A ...
- 函数传参,改变Div任意属性的值&&图片列表:鼠标移入/移出改变图片透明度
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- WordPress安全检测工具
Wordpres是一款非常流行cms系统,市面上有相当一部分的博客和站点都是使用wordpress搭建.正因为大多博客都使用wordpress,所以其安全性就显得尤为重要. 我们平时维护一个站点(不仅 ...
- android 4.0 禁用系统home键
2.2 禁用系统home键.这里不说了. 近期项目有一个需求,禁用系统的全部键.像menu, home, back.同一时候还要是想点击响应与view的弹出. 就是UI这部分要正常. back键我们自 ...