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;
    }
  • 相关阅读:
    ORACLE中dba,user,v$等开头的常用表和视图
    rman restore spfile from backup
    oracle11g设置归档模式和非归档模式
    Oracle数据文件改名
    Linux下rz/sz安装及使用方法
    oracle数据库rman备份计划及恢复
    高级数据查询SQL语法
    关系数据库SQL之基本数据查询:子查询、分组查询、模糊查询
    关系数据库常用SQL语句语法大全
    微服务化的基石——持续集成【转】
  • 原文地址:https://www.cnblogs.com/letianpaiai/p/12904491.html
Copyright © 2011-2022 走看看