![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
赵宗义11
邮箱:xinshengzzy@foxmail.com
码云: https://gitee.com/zhao_zong_yi
展开
-
redefinition of class
如果你添加了ifndef, define, endif以后, 在编译c/c++文件的时候仍然报错"redefition of class", 那可能是你的预编译命令的问题. 比如, 我使用如下的预编译命令:#ifndef FLOW_ID_H#define FLOW_ID_H...#endif这个时候就会报错. 但是如果我把FLOW_ID_H换成FLOWID_H, 立马就不报错了:#ifndef FLOWID_H#define FLOWID_H...#endif...原创 2021-01-18 11:50:08 · 1131 阅读 · 0 评论 -
GCC的编译链接功能以及静态链接库的生成和引用
考虑头文件hello.h以及两个源文件hello_fn.c和bye_fn.c:// hello.hvoid hello (const char * name);void bye (void);// hello_fn.c#include <stdio.h>#include "hello.h"void hello (const char * name) { printf ("Hello, %s!\n", name);}// bye_fn.c#include <st原创 2020-11-08 20:56:08 · 167 阅读 · 0 评论 -
用libpcap分析CAIDA的网络流量文件的猝发性
在这个程序中我们将对一个CAIDA的流量文件equinix-nyc.dirB.20180419-131800.UTC.anon.pcap进行分析.这个流量文件中包含的数据包数为74940702个, 其中TCP和UDP数据包为70084416个,数据包到达速率大约为1.25Mpps. 我们使用容量无限, 流出速率为12.5Mpps的先进先出队列对这个流量文件进行处理, 并计算在最坏情况下队列的长度 (即队列最拥塞的时候队列中的数据包数). //解析.c#include <pcap.h>...原创 2020-06-27 20:41:56 · 450 阅读 · 0 评论 -
震惊! CAIDA的pcap文件不包含以太网包头
我在用libpcap分析从caida下载的流量文件equinix-nyc.dirA.20180419-125909.UTC.anon.pcap, 希望打印出其中的TCP数据包的流标识符. 我的分析程序如下: //解析.c#include <pcap.h>#include <net/ethernet.h>#include <netinet/ip.h>#include <netinet/in.h>#include <netinet/tcp.h原创 2020-06-27 13:31:52 · 521 阅读 · 0 评论 -
在C++中使用libpcap获取pcap文件中数据包的时间戳
如题目所述, 本文主要分享一个在C++中获取pcap文件中数据包的时间戳的小程序. //解析.c#include <pcap.h>#include <net/ethernet.h>#include <netinet/ip.h>#include <netinet/in.h>#include <netinet/tcp.h>#include <arpa/inet.h>#include <stdio.h>#in原创 2020-06-27 12:46:54 · 2003 阅读 · 0 评论 -
在C++中使用malloc分配内存容易出错 (Segmentation fault: 11)
这两天用C语言实现一个算法, 后来感觉使用C++实现会更加方便, 遂在中途改用了C++, 但是一些分配内存的操作依然使用了malloc的操作. 后来在算法运行的过程中发现, 有一个用malloc分配内存的数组突然就不能访问了, 提示的信息为Segmentation fault: 11经过网上搜索信息, 大家推荐的方法是在C++中要尽量避免使用malloc/free, 而应该使用new/delete, 因为new/delete更加安全. 于是我将所有的malloc/free都替换成为了new/del原创 2020-06-26 15:43:24 · 2518 阅读 · 0 评论 -
分享一个在C语言中用libpcap解析pcap文件的小程序
如题, 分享一个在C语言中用libpcap解析pcap文件的小程序. 这个小程序的运行逻辑是检查以太网帧, 如果ether_type显示以太网帧中包含了一个IP报文的话继续对齐进行处理; 接着检查IP报文的协议字段, 如果它的协议字段显示其中包含一个TCP包的话, 则打印数据包的源和目标IP地址, 源和目标端口号, TCP包头的序列号和确认号. 代码如下://测试.c#include <pcap.h>#include <net/ethernet.h>#include <原创 2020-05-12 15:03:49 · 1641 阅读 · 1 评论 -
C语言/英特尔SSE中若干函数的定义.
首先, 要使用本文中讨论的函数和变量, 首先必须要包含头文件<emmintrin.h>.(1)__m128i是一个128位的变量, 所以它里边可以同时存放4个32位的变量, 比如4个int型变量.(2) 考虑函数__m128i_mm_cmpgt_epi32(__m128ia,__m128ib). 它的参数a和b分别为__m128i型变量. 这个函数会假设a和b中分别...原创 2020-03-23 21:01:19 · 501 阅读 · 0 评论 -
C语言中的__m128i变量类型
以下内容来源于此处.在C语言中, 如果要使用__m128i类型的变量, 首先要在程序中包含头文件<emmintrin.h>. __m128i类型的变量长度为16, 且它的地址会自动对齐到16字节的边界, 即__m128i类型的变量的起始地址总是16的整数倍....原创 2020-03-23 19:59:02 · 5842 阅读 · 0 评论 -
C语言中__attribute__((aligned(x)))的含义
在C语言中, 我们可以把一个变量指定为x对齐. 其中, x是一个2的幂次方. 将一个变量指定为x对齐的含义是, 这个变量在内存中的起始地址是x的整数倍. 假设我们要将一个字符数组指定为x对齐, 则相应地语句为 (假设x=4):char an[10] __attribute__((aligned(4)))在我的机器上, 数组an的起始地址为:如果我们将该语句改为:char a...原创 2020-03-23 19:46:53 · 4109 阅读 · 0 评论 -
分享一个Mac OS X/C语言中使用信号量实现4个线程协助的例子.
如题, 分享一个在Mac OS X/C语言中使用信号量机制实现4个线程协助的例子. 其中, 头文件<翻译包.h>可见此处.#include <stdio.h>#include <翻译包.h>#include <time.h>#include <stdlib.h>#include <pthread.h>#incl...原创 2020-03-21 21:52:18 · 470 阅读 · 0 评论 -
在Mac OS X中增加C/C++的默认头文件存放位置
参考此处, 如果要在Mac OS X中添加C/C++的默认头文件存放位置, 可以在/etc/profile (所有用户可见) 或者 ~/.bash_profile (仅当前用户可见) 中增加如下内容:# Cexport C_INCLUDE_PATH=XXXX:$C_INCLUDE_PATH# CPPexport CPLUS_INCLUDE_PATH=XXX:$CPLUS_INCLUDE...原创 2020-03-21 21:39:03 · 4636 阅读 · 0 评论 -
Mac OS X中C语言信号量Semaphore的使用.
在Mac OS X的C语言编程中使用信号量, 如果使用sem_init和sem_destroy来初始化和销毁信号量将会报错, 因为这两个函数都没有在Mac OS X中被实现. 相反, 我们应该使用sem_open来创建信号量, 用sem_close来关闭信号量 (但是该信号量仍然存在), 用sem_unlink来删除信号量. 函数sem_open, sem_close和sem_unlink...原创 2020-03-21 17:52:24 · 2274 阅读 · 0 评论