版本号是一个字符串,主要考虑以下三种用例,点分的个数一致还好,不一致需要注意
#include <boost/algorithm/string.hpp>
#include <algorithm>
#include <vector>
#include <string>
bool version_less_than(std::string str_version_a, std::string str_version_b)
{
std::vec…… 阅读全文
Tag Archives: C
再谈对非阻塞的理解
一般来说,现在大家 epoll 都是搭配着非阻塞 IO 一起用的,要问为什么?大家都这么用的啊,而且异步嘛,非阻塞嘛,很自然嘛
但是,非阻塞 IO 具体是怎么对 send 和 recv 起作用的。一般理解,我们之所以要用非阻塞,是为了避免这种情况:
客户端跟我们 tcp 三次握手完了,我们 listen fd 上得到一个 IN 事件了,然后 acc…… 阅读全文
getdatetimestr
下午写了这么一个函数
char* getdatetimestr() {
static char datetimestr[32] = {0};
static time_t last_update_time = 0;
struct timeval tv = {0};
gettimeofday(&tv, NULL);
time_t nowtime = tv.tv_sec;
if (nowtime != last_update_time) {
last_update_time = now…… 阅读全文
对有符号数的位移操作
来看代码
#include <stdio.h>
int main() {
int a = 0x80000000;
int b = a>>1;
int c = a>>2;
int d = a>>31;
int e = a>>32;
printf("%d\n%d\n%d\n%d\n%d\n", a, b, c, d, e);
return 0;
}
这个东西的输出是什么呢
vs2005 和 g…… 阅读全文
写一个日志模块
今天在写一个日志模块,遇到一些问题,学到了一些东西,记一下。
一开始想到,cpp 这么成熟的社区,日志这么基本的模块,应该现成的有很多吧,随便找一个来用就可以了,上网搜了一圈,发现真是一团混乱啊,看到这里,http://blog.csdn.net/junchaox/…
待选为 glog、log4cplus、log4cpp、log4cxx
目前准备使用glog,…… 阅读全文
cc 和 cpp 混合情况的 makefile
今天需要写一个 makefile,项目里面有 pb 生成的 cc 和 cpp 文件,分别要生成各自的 obj,以前没有遇到过这种 cc 和 cpp 混合的情况,上网找了一下,找到这个模版,http://lcinx.blog.163.com/blog…:
#
# c.cpp混合编译的makefile模板
#
#
BIN = test.exe
CC = gcc
CPP = g++
#这里只加入库头文件路…… 阅读全文
GCC “-fomit-frame-pointer”编译选项的含义
在 makefile 中看到这个编译选项,不太理解于是查了一下,相关的东西还不多,抄一下放在这里
首先这个文章,http://blog.csdn.net/byzs/arti…,讲的不错,挺清晰的:
优化你的软件时,发觉”-fomit-frame-pointer”这个选项还是蛮有用的。
GCC手册上面这么说:
Don’t keep the frame pointer in a…… 阅读全文
修改函数的返回地址
来看这个代码
#include <stdio.h>
void fun2() {
printf("haha\n");
}
void fun1(int a) {
int* ret_addr = (&a)-1;
*ret_addr = (int)fun2;
}
int main() {
int a = 3;
fun1(a);
return 0;
}
他跑起来之后的输出是这样的:
zrj@vm:~/tmp$ ./a.out…… 阅读全文
位运算的一个坑
来看这段代码
#include <stdio.h>
int main() {
int a = 1, b = 0;
if (a|b == 0) {
printf("1\n");
} else {
printf("2\n");
}
return 0;
}
这段代码想表达的意思是,如果两个 int 都为 0,那么走 if 分支,不然的话,走 else 分支,嗯,…… 阅读全文
使用代码块来缩小变量作用域
今天突发奇想,想到这么一个写法
#include <stdio.h>
int main() {
char c = 'A';
{
int a = 1;
printf("%d\n", a);
printf("%c\n", c);
}
{
int a = 2;
printf("%d\n", a);
printf("%c\n&qu…… 阅读全文