C/C++
文章平均质量分 60
kelsel
这个作者很懒,什么都没留下…
展开
-
C语言项目:使用gtest单元测试实现图书管理系统(附源码)
大一学了大半年的C语言,只学到指针,学得浅。总体下来,感觉自己只学会了hello world。没有实际的项目可以练手,网上的资料又残次不齐,代码没有一个能运行的。我从0开始,一行一行的实现了图书管理系统,虽然功能简单,但也不少,增删改查,一个不落。最主要的收货有3点学会使用googletest单元测试框架,来测试我写的代码学会了单链表学会使用visual studio 2019调试代码核心代码1. 添加图书void add_menu(){ char name[MAX_LENG原创 2020-07-28 08:13:45 · 1577 阅读 · 0 评论 -
/proc/buddyinfo 内存碎片
Node 0, zone DMA 0 4 5 4 4 3 ...0个0*PAGE_SIZE的内存4个1*PAGE_SIZE的内存5个2*PAGE_SIZE的内存4个3*PAGE_SIZE的内存如果小内存多则内存碎片多原创 2016-10-08 16:58:05 · 1605 阅读 · 1 评论 -
指针,变量从函数取值
结构体 typedef struct _room { int id; char name[32]; int *p; int phone; }room;原创 2016-10-08 16:57:03 · 732 阅读 · 0 评论 -
CFLAGS CPPFLAGS CXXFLAGS
CPPFLAGS is supposed to be for flags for the C PreProcessor; CXXFLAGS is for flags for the C++ compiler. The default rules in make (on my machine, at any rate) pass CPPFLAGS to just about everyt原创 2016-10-08 16:56:30 · 854 阅读 · 0 评论 -
C++ 函数存在默认值
这样的函数应该如何声明和定义。 void print(int value, int base)的参数base指定一个默认的参数值10, .h void print(int value, int base = 10); .cpp voidprint(int value, int base)原创 2016-10-08 16:56:07 · 491 阅读 · 0 评论 -
Xlib: No protocol specified
[root@localhost girish]# xclock --- this works fine[root@localhost girish]# su - girish[girish@localhost ~]$ DISPLAY=:0.0; export DISPLAY[girish@localhost ~]$ xclock Xlib: connection to "原创 2016-10-08 16:55:38 · 501 阅读 · 0 评论 -
C++纯虚函数小记
1.构造函数不能是纯虚函数,或者使用默认的构造函数 class person { public: virtual void get_name()=0; virtual person();//构造函数是纯虚函数 }; 2.析构函原创 2016-10-08 16:54:59 · 447 阅读 · 0 评论 -
C++静态成员函数访问非静态成员
如果类没有被创建,则没有对应的成员,也就无法访问下面这种方法需要先创建类,并将类作为参数传递给静态成员函数才能访问。 #include iostream> using namespace std; class person { p原创 2016-10-08 16:54:56 · 967 阅读 · 0 评论 -
GDB WHICH HAS NO LINE NUMBER INFO
没有加-g,或才加了-g被strip掉了 管理员在2009年8月13日编辑了该文章文章。 --> --> window._bd_share_config={"common":{"bdSnsKey":{原创 2016-10-08 16:51:57 · 2015 阅读 · 0 评论 -
高性能计算的线程模型:Pthreads 还是 OpenMP
http://software.intel.com/zh-cn/articles/threading-models-for-high-performance-computing-pthreads-or-openmp作者:Andrew Binstock 简介 UNIX 操作系统多年来一直支持线程,这是 UNIX 在服务器系统上异常活跃的主要原因之一。在过去几年间,原创 2016-10-08 16:51:49 · 4463 阅读 · 0 评论 -
configure小记
1. 指定头文件路径./configure --includedir=/home/work/inclue2.指定输出路径./configure --prefix=/usr3. PKG_CONFIG_PATHexport PKG_CONFIG_PATH=/home/mike/usr/lib/pkgconfig原创 2016-10-08 16:51:30 · 765 阅读 · 0 评论 -
Linux 套接字编程中的 5 个隐患
http://www.ibm.com/developerworks/cn/linux/l-sockpit/ 在 4.2 BSD UNIX? 操作系统中首次引入,Sockets API 现在是任何操作系统的标准特性。事实上,很难找到一种不支持 Sockets API 的现代语言。该 API 相当简单,但新的开发人员仍然会遇到一些常见的隐患。 本文识别那些隐患并向您显示如何避开原创 2016-10-08 16:51:20 · 500 阅读 · 0 评论 -
获取程序名
/home/kelsel/a.out=>得到a.out void strrchr_test(int argc, char **argv) { char *name = NULL; if ( argc > 0 ) {原创 2016-10-08 16:49:58 · 358 阅读 · 0 评论 -
auto,static,register,extern
1变量都存在于以下三个区域内静态存储区栈堆2存储在静态存储区static修饰的局部变量,全局变量,因此猜测是static3.函数内的变量,未明确指明不是auto的,默认是auto4register函数内的局部变量,register int i;register关键字建议编译器把变量放在CPU寄存器内,最后是否放在由编译器决定没加reg原创 2016-10-08 16:49:55 · 241 阅读 · 0 评论 -
Makefile.am之C++ 支持
8.9 C++ SupportAutomake includes full support for C++. Any package including C++ code must define the output variable CXX in ‘configure.ac’;the simplest way to do this is to use the AC_PROG_C原创 2016-10-08 16:49:30 · 1132 阅读 · 0 评论 -
SOURCE INSIGHT
(1)设置中文注释为一个字符宽度 在Option->Style Properties中,先在左边列表里选择Comment(注释),在右边的Font Name下拉菜单中选择Pick,然后设置为宋体等,设置完了就Ok。 管理员在2009年8月13日编辑了该文章文章。 -->原创 2016-10-08 16:57:38 · 174 阅读 · 0 评论 -
printf输出 %#x
#include stdio.h> #include stdlib.h> #include string.h> int main(int argc, char **argv) { int i;原创 2016-10-08 16:57:56 · 4326 阅读 · 0 评论 -
malloc与heapAlloc的区别
malloc 标准的C库函数 heapAlloc Windows系统的API,平台相关类似如下 函数名 标准库 Windows平台 Linux平台 打开文件 fopen OpenFile open原创 2016-12-07 15:11:58 · 1093 阅读 · 1 评论 -
打印结构体偏移
#include <stdio.h>#define OFFSET(x, y) &((x *)0)->ystruct TestStruct { int mVar1; int mVar2; int mVar3;};void OffsetTestStruct(){ fprintf(stderr, "sizeof(struct TestStruct) %d\n", s原创 2016-12-07 15:07:08 · 801 阅读 · 0 评论 -
C++多态公有继承
SetName方法 #include iostream> #include string> #include stdio.h> using namespace std; class student{ public:原创 2016-10-08 17:27:30 · 309 阅读 · 0 评论 -
C+=析构函数应当是虚函数,除非类不用作基数。
1. //基数student的析构函数不是vi #include iostream> #include stdio.h> using namespace std; class student{ public:原创 2016-10-08 17:27:28 · 415 阅读 · 0 评论 -
c++函数模板
#include iostream> using namespace std; template typename AnyType> void Swap(AnyType &a, AnyType &b) { AnyType tmp;原创 2016-10-08 17:27:22 · 187 阅读 · 0 评论 -
const 与mutable
#include iostream> using namespace std; class Student{ public: void Register()const { m_register = true;原创 2016-10-08 17:27:12 · 356 阅读 · 0 评论 -
c++引用
引用是已定义的变量的别名。引用必须声明且初始化。主要用途:1. 函数形参。将引用变量作为参数,函数将使用原始数据,而不是副本。2. &的左边和右边左边,声明引用int b;int &a = b;右边,取地址运算符int b;int *a = &b;原创 2016-10-08 17:27:02 · 222 阅读 · 0 评论 -
wcslen strlen,字符串内的空格和字符串的结束符
char str[] = "a b"; char: 'a', ' ', 'b', 0 hex: 97,32,98, 0 因此strlen,wcslen可以计算字符串内的空格原创 2016-10-08 17:24:09 · 1375 阅读 · 0 评论 -
十大C++经典教程
1.《C++ Primer中文版》(第4版) 【原书名】 C++ Primer (4th Edition) 【原出版社】 Addison Wesley/Pearson 【作者】 (美)Stanley B.Lippman,Josée LaJoie,Barbara E.Moo 【译者】 李师贤 【丛书名】 图灵计算机科学丛书 【出版社】人民邮电出版社 本书是久原创 2016-10-08 17:20:12 · 1419 阅读 · 0 评论 -
使用backtrace在程序运行时获得函数栈情况
之前写了一篇文章使用gcc内建的builtin_return_address来得到函数堆栈情况,今天在代实验的时候,翻了一下之前下的《Linux Programmer's Toolbox》发现有一小节描述“运行时获得栈情况”,使用的是backtrace()函数。《Linux Programmer's Toolbox》中的例子,使用backtrace得到地址,然后使用addr2line得到符号:vo原创 2016-10-08 17:16:44 · 1826 阅读 · 0 评论 -
GTEST Value Parameterized
#include "gtest/gtest.h" #if GTEST_HAS_PARAM_TEST using ::testing::TestWithParam; using ::testing::Values; clas原创 2016-10-08 17:02:16 · 790 阅读 · 0 评论 -
C++ 两个类互相引用
编译出错,未找到B的定义,在使用一个类时,必须找到类的定义,或者使用如下三种方法1. 使用指针 B*b;2. 使用引用B& b;3. 类分成头文件,互相包含 class A { B b; } class B原创 2016-10-08 16:58:40 · 2720 阅读 · 0 评论 -
使用GTK+获取屏幕分辨率并设置满屏显示效果
在linux下,经常需要设置程序全屏显示,GTK+中提供了获取屏幕分辨率的方式,然后只要根据得到的宽高设置窗口显示大小,同时使用gtk_window_set_decorated去掉边框和标题栏显示,就能实现相应的效果了。下面程序,就是简单的给出了窗口满屏效果是如何实现的,为保证程序的正常退出,添加了键盘事件,按下Esc键,程序退出。 /* * Name: full_scree原创 2016-10-08 16:58:23 · 2239 阅读 · 0 评论 -
内存管理——二级指针
#include stdio.h> #include string.h> #include unistd.h> #include stdlib.h> void get_memory_fail(char *local_p) {原创 2016-10-08 16:49:09 · 344 阅读 · 0 评论 -
指针和数组之字符串的区别
1. 字符串宏#define CONST_STR "const str"宏在预编译的时候会替换成实际的值2.数组数组名对应一块内存,在生命周期内其地址和容量不会改变,数组里面的内容可以变。3.指针指针指向一块内存,如果指向字符串常量(RO),则不能修改内容。如果申请了一块内存,复制字符串常量,则可以修改内容 #include s原创 2016-10-08 16:48:59 · 371 阅读 · 0 评论 -
GCC指定路径
1.头文件, -I$ gcc foo.c -I /home/xiaowp/include 2.库文件, -L path -l lib$ gcc main.c -L /home/xiaowp/lib -lfoo3 MAKEFILE指定源文件路径VPATH= src4 LD,找不到库-rpath,-rpath-link原创 2016-10-08 16:48:56 · 962 阅读 · 0 评论 -
dynamic_cast 删除子类
class A{public: A(){puts("100");} ~A(){puts("110");}};class B : public A{public: B(){puts("200");} ~B(){puts("210");}};class C : public B{public: C(){puts("300");} ~C(){puts("310");原创 2016-08-30 09:19:13 · 403 阅读 · 0 评论 -
堆与栈浅析(1)
每个线程分配一个stack,每个进程分配一个heap。stack是线程独占的,heap是线程共用的。堆 Heap在windows平台下,堆的默认大小是1M。不过,可以通过malloc/free动态调整。栈 Stack程序运行出现栈溢出stack overflow,也就是栈溢出(没人听过堆溢出吧)。 表明栈是有固定大小的。在windows平台下,栈的默认大小是1M,栈的大小的信息是包含在可执行原创 2016-02-23 15:46:04 · 824 阅读 · 0 评论 -
C基本数据类型转换
char c; short s; int i; unsigned int u; long int l; unsigned long int ul; float f; double d; long double ld; i = i + c; /* char -> int */ i = i + s; /* short -> int */ u = u + i; /* int原创 2016-01-13 21:11:04 · 645 阅读 · 0 评论 -
c++ 只在栈上创建对象
namespace t16 { class Stack { public: Stack() { } ~Stack() { } private: /* 重载了operator new,编译器发现类重载了operator new, 则调用类的operator new */ void *operator new(std::size_t size) {原创 2016-01-12 22:55:36 · 680 阅读 · 0 评论 -
c++ 只在堆上创建对象
namespace t15 { class Heap { public: // 用户可以调用new创建对象 Heap() { p = malloc(100); } void destroy() { delete this; } private: // 用户无法调用delete删除对象 ~Heap() { free(p);原创 2016-01-12 21:44:48 · 673 阅读 · 0 评论 -
cl查看类的内存布局
class Test{private: int ival;public: Test(); ~Test(); int GetVal() { return ival; }; virtual int SetVal(int val) { ival=val; };};单个类 (区分大小写 /d1reportSingleClassLayoutcl test.cpp原创 2016-01-12 11:27:01 · 849 阅读 · 0 评论 -
C++复制构造函数浅析(1)
class B2 {public: B2(string v) : id (v) { cout << "B2::B2() " << id << endl; } ~B2() { cout << "B2::~B2() " << id << endl; } B2(const B2 &b2) : id (b2.id) { id += "Copy Construct原创 2016-01-11 23:02:47 · 382 阅读 · 0 评论