zoukankan      html  css  js  c++  java
  • 源文件和头文件的区别

    同学帮忙给我写的一份

    #pragma once //(批注)用这个保证不会重包含
    
    //(批注)在这里写包含你需要用到的库,用到的越少越好,用到多个库时按字典顺序排列
    #include <iostream>
    
    //(批注)在自己写的库中,尽量(尽最大可能)不用using nsmespace,一定不要用
    
    //(批注)每个函数上面可以写注释,这是我写注释的规范(不是标准规范)
    //(接批注)我也不常写注释,我自己调用的话一般只标注功能,但是给别人写的库一定要有完整注释,特别是头文件中
    
    /*
    将data输出((批注)函数的功能)
    @data:要输出的数据((批注)函数的参数,顺序从左到右来)
    @return:无((批注)函数的返回值)
    */
    void Print(int data);
    
    /*
    将两个数相加
    @a:左操作数
    @b:右操作数
    @return:相加的结果
    */
    int Add(int a,int b);
    
    /*(批注)函数声明可以只写类型,但是如果参数较多,最好写上,不然看着乱,对一看就知道是干啥的参数不用写
    将两个数相加
    @int:左操作数
    @int:右操作数
    @overflow:检测是否溢出,若传入null则不检测
              否则将溢出结果写入其中
    @return:相加的结果
    */
    int Add(int ,int ,bool *overflow);
     1 #include "My.h"
     2 #include "My.h" //(批注)多次包含应该保证一定不会冲突
     3 using namespace std;//(批注)可以在这里加命名空间引用,尽量减少使用范围
     4 
     5 //(批注)在源文件中声明并定义的函数,只有本文件会用到,别人包含头文件也无法使用(头文件中没声明)
     6 void PrintMsg(int x,int y)
     7 {
     8     bool overflow;
     9     cout<<Add(x,y,&overflow)<<" 溢出:"<<overflow<<endl;
    10 }
    11 
    12 int main()
    13 {
    14     PrintMsg(123,456);
    15     PrintMsg(2147483647,2147483647);
    16     PrintMsg(-2147483647,-2147483647);
    17     PrintMsg(2147483647,-2147483647);
    18 }
    #include "My.h"
    //(批注)函数间空格
    void Print(int data)
    {
        std::cout<<data;
    }
    
    int Add(int a,int b)
    {
        return a+b;
    }
    
    int Add(int x,int y,bool *overflow)
    {
        if(overflow==nullptr)//(批注)特殊情况可以写到开头
            return Add(x,y);
            
        int ret=x+y;//(批注)用到的临时变量尽量起有意义的名字,比如ret是return的缩写,不要写a,b,c,z之类的
        //(接批注)参数这种结合函数功能一看就知道是干啥的,起名就不需要复杂了,写成x,y还更好理解,overflow是溢出
        if((x>>(sizeof(int)-1))^(y>>(sizeof(int)-1)))//比较符号位,若不同,则不会溢出
            *overflow=false;//(批注)判断,循环,只有一条语句时,不要花括号,但是要缩进
        else if(x>0&&ret<0||x<0&&ret>0)//若操作数符号位相同,计算结果符号位与操作数不同
            *overflow=true;
        return ret;
    }
  • 相关阅读:
    spring 源码解析一(bean定义)
    IOC 容器中添加组件的方式
    spring 后置处理器
    .NetCore3.1 配置Kestrel端口的几种方式及优先级
    CESIUM空间中AB两点A绕B点的地面法向量旋转任意角度后新的A点坐标(A’)
    Cesium坐标转换:根据两个坐标点(坐标点a、坐标点b)的经纬度,计算a点和b点的角度
    任意一个点A(x,y)围绕任意一个点B(a,b)旋转任意角度后的坐标值
    已知地球上的2点坐标,A和B,求A,B线上 任意点位置。
    centos6下mysql5.7.13制作rpm包
    sql 删除狐立帐户
  • 原文地址:https://www.cnblogs.com/letianpaiai/p/12904491.html
Copyright © 2011-2022 走看看