zoukankan      html  css  js  c++  java
  • c语言编程之sglib库的简单使用

    说实话自从大学毕业后已经很久没有用c语言写过程序了,一般都是使用c++,c++的stl和boost等,这些代码库大大简化了我们的编程复杂度。由于最近某种原因在次开始用c写程序。我是个比较懒的人,比较喜欢使用别人的第三方库,好不容易找到一个叫sglib的开源库,当然要使用一下啦。不多说。


    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include "sglib.h"

    typedef struct _ip_mask_map
    {
     int first;
     int second;
     struct _ip_mask_map* next;
    }ip_mask_map,*pip_mask_map;

    int ipcomp(ip_mask_map* elem1,ip_mask_map* elem2)
    {
     if ((elem1->first == elem2->first) &&
      (elem1->second == elem2->second))
     {
      return 0;
     }
     else
     {
      return 1;
     }
    }

    int main(int argc, char* argv[])
    {
     ip_mask_map *elem,*head=NULL,*_member;

     elem = (pip_mask_map)malloc(sizeof(ip_mask_map));
     elem->first = 1;
     elem->second = 100;
     elem->next = NULL;

     //添加elem到链表,如果指向链表的指针head为空时,将新元素elem赋值给head
     SGLIB_LIST_CONCAT(ip_mask_map,head,elem,next);

     elem = (pip_mask_map)malloc(sizeof(ip_mask_map));
     elem->first = 2;
     elem->second = 200;
     elem->next = NULL;

     SGLIB_LIST_CONCAT(ip_mask_map,head,elem,next);

     elem = (pip_mask_map)malloc(sizeof(ip_mask_map));
     elem->first = 2;
     elem->second = 200;
     elem->next = NULL;

     //如果成员已经在链表存在的话,_member返回指向那个成员的指针,否者返回NULL
     SGLIB_LIST_ADD_IF_NOT_MEMBER(ip_mask_map,head,elem,ipcomp,next,_member);
     
     if (_member != NULL)
      free(elem);

     //遍历并删除动态分配的内存
     for (elem = head; elem != NULL;)
     {
      pip_mask_map tmp = elem;
      printf("%d,%d ",elem->first,elem->second);
      elem = elem->next;
      free(tmp);
     }

     return 0;
    }

  • 相关阅读:
    一、【注解】Spring注解@ComponentScan
    一致性Hash算法
    垃圾回收器搭配和调优
    JVM的逃逸分析
    简单理解垃圾回收
    类加载机制和双亲委派模型
    VMWare15下安装CentOS7
    HBase协处理器(1)
    依赖注入的三种方式
    Javascript-设计模式_装饰者模式
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3170371.html
Copyright © 2011-2022 走看看