语法
sunxiaopengsun
这个作者很懒,什么都没留下…
展开
-
pthread_mutex_lock和pthread_cond_t结合用法
条件变量 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:1)一个线程等待"条件变量的条件成立"而挂起;2)另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。1.主要涉及到下面的函数:int...原创 2020-10-21 09:23:56 · 249 阅读 · 0 评论 -
结构体大小计算之位域字段
https://blog.csdn.net/xy010902100449/article/details/50752573https://blog.csdn.net/xy010902100449/article/details/50752573转载 2019-06-25 14:10:38 · 187 阅读 · 0 评论 -
实战c++中的string系列--不要使用memset初始化string(一定别这么干)
参考链接: http://www.cppblog.com/qinqing1984/archive/2009/08/07/92479.html百度百科第一次这么给力: void *memset(void *s, int ch, size_t n); 函数解释:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。 memset:作用是在一...转载 2018-07-30 18:51:23 · 1430 阅读 · 0 评论 -
版本控制, C语言的两个宏, __DATE__, __TIME__, VS2005带参运行程序
__DATE__, __TIME__两个宏用来表示编译时的时间, 当我们的软件在不同时期发布后, 可通过这两个参数确定用的是哪个版本, 下面是一个应用小例 [cpp] view plain copy#include const char *version = "1.1.1.1"; void PrintVersion(原创 2017-09-20 16:34:07 · 545 阅读 · 0 评论 -
C++中的explicit关键字
在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上。再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决。但稍微留心一下就会发现现有的MFC库或者C++标准库中的相关类声明中explicit出现的频率是很高的。了解explicit关键字的功能及其使用对于我们阅读使用库是很有帮助的,而且在编写自己的代码时也可以尝试使用。既然C++语言提供这种特性原创 2017-08-24 14:45:13 · 206 阅读 · 0 评论 -
联合体(union)的使用方法及其本质
有些基础知识快淡忘了,所以有必要复习一遍,在不借助课本死知识的前提下做些推理判断,温故知新。1.联合体union的基本特性——和struct的同与不同union,中文名“联合体、共用体”,在某种程度上类似结构体struct的一种数据结构,共用体(union)和结构体(struct)同样可以包含很多种数据类型和变量。不过区别也挺明显:结构体(struc原创 2017-04-11 16:40:08 · 415 阅读 · 0 评论 -
C/C++中volatile关键字详解
1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:A volatile specifier is a hint to a compiler th原创 2017-03-04 11:23:57 · 250 阅读 · 0 评论 -
C语言的那些小秘密之volatile
volatile的重要性对于搞嵌入式的程序员来说是不言而喻的,对于volatile的了解程度常常被不少公司在招聘嵌入式编程人员面试的时候作为衡量一个应聘者是否合格的参考标准之一,为什么volatile如此的重要呢?这是因为嵌入式的编程人员要经常同中断、底层硬件等打交道,而这些都用到volatile,所以说嵌入式程序员必须要掌握好volatile的使用。其实就象读者所熟悉的const一样,vol原创 2017-03-04 09:06:42 · 355 阅读 · 0 评论 -
C++中友元(友元函数和友元类)的用法和功能
采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和原创 2017-01-21 08:49:17 · 296 阅读 · 0 评论 -
移位运算符
问:计算表达式14 >> 2的值。答:表达式14 >> 2的值为3,因为14(即二进制的00001110)向右移两位等于3(即二进制的00000011)。说白了,就是把要移动的数转换成2进制,右移几位就去掉右边的几位数,左移几位就在右边加几个0,比如14右移2位就是转成二进制变成1110,去掉右边的10,变成11,11转成十进制就是3;左移2位就是111000,转成十进制就是56。原创 2017-01-19 18:28:13 · 459 阅读 · 0 评论 -
delete 和 delete []的真正区别
c++中对new申请的内存的释放方式有delete和delete[两种方式,到底这两者有什么区别呢?1.我们通常从教科书上看到这样的说明:delete 释放new分配的单个对象指针指向的内存delete[] 释放new分配的对象数组指针指向的内存那么,按照教科书的理解,我们看下下面的代码:int *a = new int[10];delete a;原创 2017-02-05 09:01:42 · 273 阅读 · 0 评论 -
默认构造函数和拷贝构造函数(深浅拷贝)
如果类包含内置或复合类型的成员,则该类就不应该依赖于合成的默认构造函数,它应该定义自己的构造函数来初始化这些成员。当一个类含有一些数据成员,你需要在实例化类的时候就初始化这些成员,你就需要自己定义构造函数。例如Person类含有m_strName成员,你在声明该类是就将其赋值 Person myPerson("张三")对于拷贝构造函数,为了防止浅拷贝造成的两个对象指向同一内原创 2017-02-05 08:10:43 · 924 阅读 · 0 评论 -
默认构造函数、构造函数、复制构造函数和赋值操作符
这几个概念比较容易混淆,总结一下。1、默认构造函数默认构造函数是没有参数、和类同名的构造函数。当一个类没有任何构造函数时,编译器将会合成一个默认构造函数。那么编译器合成的默认构造函数是做什么用的呢?是初始化类的成员变量吗?事实上不是。编译器合成的默认构造函数只是满足编译器的需要,而不是按照程序员想的去做。更详细的内容可参考:谈一谈默认构造函数编译器合成的默认构造函数初始原创 2017-02-05 08:06:31 · 424 阅读 · 1 评论 -
#if, #ifdef, #ifndef, #else, #elif, #endif的用法
#elif是预处理指令,跟#if等一起用,进行条件编译,比较完整的格式应该是:#elif 条件 表达式;………#else 条件 表达式;#if 条件 表达式;#endif;条件和表达式语句间用空格分开elif相当于else if,判断中间可以弄n个elif条件判断完最后一定要加#endif哦! 这些命令可以让编译器进行简单的逻辑控制,当一个文原创 2016-12-30 10:01:55 · 401 阅读 · 0 评论 -
TryEnterCriticalSection
EnterCriticalSection,如果遇到还没释放的,线程会阻塞住。 if ( TryEnterCriticalSection(&m_cs_XX) != 0 ) { // do something LeaveCriticalSection(&m_cs_XX);} 如果EnterCriticalSectio原创 2016-12-29 18:12:54 · 2319 阅读 · 0 评论 -
C语言中的__FILE__、__LINE__和#line
C语言中的__FILE__用以指示本行语句所在源文件的文件名,举例如下(test.c):#include int main(){printf("%s\n",__FILE__);}在gcc编译生成a.out,执行后输出结果为:test.c在windows的vc6.0下编译执行结果为:c:\documents and settings\administr原创 2016-12-29 18:00:41 · 314 阅读 · 0 评论 -
类中定义枚举
类中定义枚举,可以直接当宏使用原创 2016-12-29 17:08:41 · 3070 阅读 · 0 评论 -
strlen和sizeof的区别
一、sizeof sizeof(...)是运算符,而不是一个函数。 一个简单的例子:int a;cout 在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的原创 2016-12-29 16:50:30 · 293 阅读 · 0 评论 -
static作用(修饰函数、局部变量、全局变量)
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variable原创 2016-12-29 16:33:09 · 310 阅读 · 0 评论