zoukankan      html  css  js  c++  java
  • 程序员之---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
    "); //造成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、变量范围给出凝视



  • 相关阅读:
    keys命令的缺点
    redis与memcache的区别
    sql与nosql如何选择?
    MongoDB与MySql的区别
    linux环境搭建系列之memcached安装步骤
    linux环境搭建系列之tomcat安装步骤
    linux环境搭建系列之Apache ant安装步骤
    linux环境搭建系列之jdk安装
    虚拟机安装教程(linux、centOS)
    memcached解压报错gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now的解决方法
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7232358.html
Copyright © 2011-2022 走看看