• 备忘


    温金辉新浪博客:http://blog.sina.com.cn/ilte

    --------------------------------------------------------------------------------------------------

    --------------------------------------------------------------------------------------------------

    (1)PNG编解码实现(LodePNG):

    http://lodev.org/lodepng/

    (2)_msize(void *) 函数

    查看通过动态内存申请的指针对应堆内存区的大小,内存区必须是使用calloc、malloc、realloc申请的。见http://www.cnblogs.com/absolute8511/archive/2009/01/14/1649612.html

    例如:

    #include <malloc.h>
    void test__msize()
    {
        char *p;
        p = (char *)malloc(99*sizeof(char));
        if(p != 0)
        {
            printf("msize: %d
    ", _msize(p));
            free(p);
        }
    }

    输出:

    msize: 99

    (3)__FILE__和__LINE__标签

     编译时编译器会自动替换为当前所处文件名和当前行号,在C中对应使用"%s"和"%d"输出。

     (4)函数指针:

    typedef double (*ArithmeticHandler)(double a, double b);
    
    double add(double a, double b)
    {
        return a + b;
    }
    
    double sub(double a, double b)
    {
        return a - b;
    }
    
    double mul(double a, double b)
    {
        return a * b;
    }
    
    double div(double a, double b)
    {
        if (b == 0)
        {
            return 0x7fffffff;
        }
        return a / b;
    }
    
    void test_function_pointer()
    {
        ArithmeticHandler methods[] = {     // function pointer array
            add,
            sub,
            mul,
            div};
        printf("1 + 3 = %.2lf
    ", methods[0](1, 3));
        printf("1 - 3 = %.2lf
    ", methods[1](1, 3));
        printf("1 * 3 = %.2lf
    ", methods[2](1, 3));
        printf("1 / 3 = %.2lf
    ", methods[3](1, 3));
    }

    (5)不定长参数宏定义

    代码中为了提供统一的输出方式,一般需要定义边长参数宏,比如定义一个Log宏用于统一输出Log信息。

    #define LOG(format, ...) printf(format, ##__VA_ARGS__)
    void test_VA_ARGS()
    {
        printf("********test_VA_ARGS*******
    ");
        LOG("File:%s	Line:%d
    ", __FILE__, __LINE__);
    }

    (6)time.h

    头文件time.h定义了一些与时间相关的结构和函数,首先看一些定义:

     1 typedef    long clock_t;
     2 typedef    long time_t;
     3 
     4 struct tm
     5 {
     6     int    tm_sec;        /* Seconds: 0-59 (K&R says 0-61?) */
     7     int    tm_min;        /* Minutes: 0-59 */
     8     int    tm_hour;    /* Hours since midnight: 0-23 */
     9     int    tm_mday;    /* Day of the month: 1-31 */
    10     int    tm_mon;        /* Months *since* january: 0-11 */
    11     int    tm_year;    /* Years since 1900 */
    12     int    tm_wday;    /* Days since Sunday (0-6) */
    13     int    tm_yday;    /* Days since Jan. 1: 0-365 */
    14     int    tm_isdst;    /* +1 Daylight Savings Time, 0 No DST,
    15                  * -1 don't know */
    16 };

    几个函数定义:

    1 clock_t    clock (void);
    2 time_t    time (time_t*);
    3 double    difftime (time_t, time_t);
    4 time_t    mktime (struct tm*);
    5 
    6 char*    asctime (const struct tm*);
    7 char*    ctime (const time_t*);
    8 struct    tm* gmtime (const time_t*);
    9 struct    tm* localtime (const time_t*);

    (1)clock_tclock (void);

    返回程序运行到当前的时间间隔,精度1ms,可用于计算代码执行时间。

    clock_t    clock (void);
  • 相关阅读:
    用c#写一个json的万能解析器
    使用Xpath从网页中获取数据
    pdf文件流生成pdf文件
    AES加密和Base64混合加密
    参数请求post, get , delete中的基本使用(2)
    参数请求post, get , delete中的基本使用(1)
    java多线程打印ABC
    我的开发工具
    MyBatis的#与$
    struts1
  • 原文地址:https://www.cnblogs.com/rmthy/p/6260105.html
Copyright © 2020-2023  润新知