c++filt用法介绍

解析变量类型

typedef char * pstring;

const pstring cstr = 0; //cstr是指向char的常量指针

const pstring *ps; //ps是一个指针,它的对象是指向char的常量指针

上面两条声明语句的基本数据类型都是const pstring,const是对给定类型的修饰。pstring实际上指向char的指针,因此const pstring就是指向char的常量指针,而非指向常量字符的指针。

遇到类型别名时,人们往往会错误地尝试把类型别名展开,以理解该语句的含义,这是错误的!

例如:

typedef char *......

C++语言导学

放假前去朋友那闲逛,发现他一前端居然看起了一本的书,这不是不务正业吗?

为了让他在前端方面能有更深的造诣,我只能把这本书拿来勉为其难的读下。

说来惭愧工作中使用的C++只是最简单的那部分,公司编程规范中明确规定不能使用c++ 11 14 17 模板等新特性。本文记录学习该书过程中的疑问,如有错误欢迎指正。

确定默认c++编译标准

如何确定当前g++使用的哪个版本的C++标准编译呢?

这里介绍一种查看方法,如果当前g++版本是4.7之后,可以使用如下方法查看:

[root workspace]#g++ --version | head -1

g++ (Ubuntu 7.......

C语言函数getrlimit与setrlimit介绍

老规矩,祭出man手册。学习man手册中的内容:man 2 getrlimit

The getrlimit() and setrlimit() system calls can be used to get and set the resource limits such as files, CPU, memory etc. associated with a process.

Each resource has an associated soft and hard limit.

soft limit: The soft limit is the actual limit enfo......

协程-C语言实现

最近在学习lua的过程中发现lua居然有个东西叫协程(协同coroutine),虽然以前就听过这个概念,但没有结合实践的一些理解。

开始今天的文章前,首先需要学习下面几篇文章。

漫画-什么是协程?

lua协同程序

difference between a coroutine and a thread

linux下有ucontext族函数,可以用于实现协程。

我所理解的ucontext族函数

ucontext族函数详解

Segment Fault例子:

#include <stdio.h>

void ping();

void pong();

vo......

文件IO相关的几个面试题

如下代码输出什么?

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

int main()

{

fprintf(stderr, "Hello ");

fprintf(stdout, "It's a small ");

fprintf(stderr, "World\n");

fprintf(stdout, "place\n");

return 0;

}

运行结果:

[root systemProgramming]#./printf

Hello World

It's a s......

线程池-C语言实现

最近可能会用到C实现的线程池,在github fork了一个项目,学习其代码,修改发现的问题,本文记录学习中遇到的问题和解决方法。

我的github仓库地址C-Thread-Poll

原作者仓库地址C-Thread-Poll

查看进程创建的线程

thpool.c文件函数thread_do函数使用了函数:

prctl(PR_SET_NAME, thread_name);

设置线程的名字,thread-pool-%d,如何查看某个进程所创建的线程呢?

[root pthread_detach]#ps -T -p $(pidof /root/C-Thread-Pool/exam......

Linux C写中文配置

需要在linux C/C++程序中生成一个文件,文件中包含中文字符,可是上库到代码中编译运行,发现生成的文件乱码,相同的代码,自己编写的demo生成的文件显示却正常。

为什么会出现相同代码,运行结果不同的问题呢?

原因是由于项目文件中使用的是ISO 8859-1编码,而我自己编写的demo使用的是utf-8编码,而ISO 8859-1编码无法识别中文字符,因此导致写入到文件乱码。

我们使用如下代码验证:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <......

C语言常用宏总结

获取数组长度

/// Obtain the number of elements in the given C array

#define GET_ARRAY_LEN( arrayName ) (sizeof( arrayName ) / sizeof(( arrayName)[ 0 ] ))

使用例子:

#include <stdio.h>

/// Obtain the number of elements in the given C array

#define GET_ARRAY_LEN( arrayName ) (sizeof( arrayName ) / ......

void *的作用

在stackoverflow上看到一篇关于void *作用觉得非常不错,将作者的回答贴在下面,后续补充自己的理解。

A pointer to void is a "generic" pointer type. A void * can be converted to any other pointer type without an explicit cast. You cannot dereference a void * or do pointer arithmetic with it; you must convert it to a pointer to a......

C语言宏offsetof

C 库宏 offsetof(type, member-designator) 会生成一个类型为 size_t 的整型常量,它是一个结构成员相对于结构开头的字节偏移量。成员是由 member-designator 给定的,结构的名称是在 type 中给定的。

在阅读Linux/UNIX系统编程手册一书时阅读源代码时有如下相关注释:

/* REQ_MSG_SIZE computes size of 'mtext' part of 'requestMsg' structure.

We use offsetof() to handle the possibility that there ar......