zoukankan      html  css  js  c++  java
  • C++ Project 积累 (1)

    1. 不要在头文件中作定义.

    packet.h 文件中定义了两个 map 和若干函数, packet.cpp 中引用 map 并实现函数, 本以为皆大欢喜.

    main.cpp 中引入 packet.h 并调用一个函数测试, 报错, 重定义.

    google , 未果, 想了一下, 忽然意识到 effective c++ 中讲到不要再头文件中作定义.

    map 放到 packet.cpp , 编译报错, 需要在 main.cpp 中放入 extern 声明.

    终于 work.

    2. 昨晚抽空看了下 google c++ style

    看的目的是想搞明白变量到底怎么去定义比较好, 但看完后觉得收货并不大. 我看过不少写的比较漂亮的源代码, 比如在 visual studio 中随便找到一个函数的定义会跳到该函数的定义, 写的真漂亮, 我今天看到 winsock.h 文件, 一个头文件 4000 多行, 写的真是工整, 但代码的 style google 推崇的相差甚远

    总结了几条自己觉得还比较有用的 http://app.yinxiang.com/shard/s9/sh/4154986d-c12c-4201-a623-8d0bb8699483/c79e17566d4a047310d1bc04b112e06b

    3. 时间类

    Pcap 头中有 timeval 结构体

    struct timeval  
    {  
        long tv_sec; /*
    */  
        long tv_usec; /*
    微秒*/  

    };  

    这个比较精确, 一般使用 time_t 就足够了, time_t unix 标准时间戳, 记录从 1970 到现在经过的秒数

    另外, 直接存储年月日的是一个结构体 tm

    struct tm  
    {  
        int tm_sec;  /*
    秒,正常范围0-59 但允许至61*/  
        int tm_min;  /*
    分钟,0-59*/  
        int tm_hour; /*
    小时, 0-23*/  
        int tm_mday; /*
    日,即一个月中的第几天,1-31*/  
        int tm_mon;  /*
    月, 从一月算起,0-11*/  1+p->tm_mon;  
        int tm_year;  /*
    年, 1900至今已经多少年*/  1900 p->tm_year;  
        int tm_wday; /*
    星期,一周中的第几天, 从星期日算起,0-6*/  
        int tm_yday; /*
    从今年11日到目前的天数,范围0-365*/  
        int tm_isdst; /*
    日光节约时间的旗标*/  
    };  

    常用用法

    1) 已知 time_t, UTC 时间转化到当地时间并输出可读的时间格式

    time_t ltime = 1346030160;

    char buf[30] = {0};

    struct tm *timeptr = localtime(&ltime);

    strftime(buf,30,"%Y/%m/%d,%H:%M:%S " , timeptr);

    printf(buf);

    2) 标准用法, 获取时间

    time_t timep;

    time(&timep);

     

    4. Boost filesystem 前面已经 POST

    5. Winpcap 编程前面已经 POST

        

  • 相关阅读:
    cenos7 安装samba
    Cenos7 学习笔记
    mysql学习笔记(一)
    Qt 程序打包发布总结 转
    主机名由localhost变成bogon是怎么回事,怎样变回localhost这个名字?
    Heap Size 与 Stack Size
    数据字节对齐案例
    C语言进阶日志二
    位带操作
    Stm32高级定时器(转自:luowei_memory)
  • 原文地址:https://www.cnblogs.com/zhouzhuo/p/3665394.html
Copyright © 2011-2022 走看看