
C++
文章平均质量分 65
fyfcauc
这个作者很懒,什么都没留下…
展开
-
C++ std::mutex 与 const函数
写一个队列需要在其函数之间做同步,首选了std::lock_guard通过RAII的方式来优雅实现确保释放。code很简单,Class自己有一个成员变量mutex, 相关函数在调用前使用其作为构造参数来构造lock_guard即可。编译时遇到了问题,死活编译不过,有了这样的报错: note: candidate constructor not viable: 1st argument (‘cons原创 2017-04-26 20:13:36 · 3598 阅读 · 0 评论 -
C语言指针转换为intptr_t类型
From: http://www.cnblogs.com/Anker/p/3438480.html1、前言 今天在看代码时,发现将之一个指针赋值给一个intptr_t类型的变量。由于之前没有见过intptr_t这样数据类型,凭感觉认为intptr_t是int类型的指针。感觉很奇怪,为何要将一个指针这样做呢?如是果断上网查查,发现我的感觉是错误的,所以,任何事情不能凭感觉,要弄清楚来龙转载 2014-12-15 14:20:56 · 509 阅读 · 0 评论 -
C语言指针转换为intptr_t类型
From: http://www.cnblogs.com/Anker/p/3438480.htmlC语言指针转换为intptr_t类型1、前言 今天在看代码时,发现将之一个指针赋值给一个intptr_t类型的变量。由于之前没有见过intptr_t这样数据类型,凭感觉认为intptr_t是int类型的指针。感觉很奇怪,为何要将一个指针这样做呢?如是果断上网查查,发现转载 2014-11-01 15:49:50 · 508 阅读 · 0 评论 -
【Linux学习】epoll详解
目录(?)[+]什么是epollFrom: http://blog.youkuaiyun.com/xiajun07061225/article/details/9250579epoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced转载 2014-09-29 17:16:55 · 534 阅读 · 0 评论 -
Linux下DIR,dirent,stat等结构体详解
From: http://blog.youkuaiyun.com/zhuyi2654715/article/details/7605051最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅。首先说说DIR这一结构体,以下为DIR结构体的定义:struct __dirstream {转载 2014-09-25 21:44:47 · 498 阅读 · 0 评论 -
android ndk翻译之七:Bionic C 库一览
Bionic C 库一览:介绍:核心体系:Bionic设计的核心思想是:尽量简单。这意味这这个C库只围绕着内核提供轻量级的包装,我们让它尽量小,不去处理一些细枝末页的事情。取Bionic这个名字,是因为它由部分BSD和部分linux组成:它的代码由BSD C库和自定义的linux代码(用于处理线程,进程,信号,和其他事情)混合而成。所有原始的BSD块,遵转载 2014-09-25 20:15:05 · 1888 阅读 · 0 评论 -
#include time.h和 #include sys/time.h
搜索了好几个,都是这么说的,有点看不明白。分析一下: 相同点: 二者都是与 日期时间相关的 头文件。不同点: time.h 是c99的,也就是c的库函数。 sys/time.h是linux系统的。 time.h既然是c库函数,那么在具体的平台上,就就可以依靠平台而实现,所以看上去是与平台无关的,谁都可以调用.而 sys/ti转载 2014-09-25 20:10:40 · 2169 阅读 · 0 评论 -
value_type, key_type, mapped_type, reference,const_reference
#include "stdafx.h"#include #include #include using std::cout;using std::endl;using std::cin;using std::vector;using std::map;using std::pair;int _tmain(int argc, _TCHAR* argv[])转载 2014-09-25 21:02:17 · 803 阅读 · 0 评论 -
sync/fsync/fdatasync的简单比较
From: http://blog.youkuaiyun.com/zbszhangbosen/article/details/7956558之前在研究MySQL的一个参数innodb_flush_method时,就涉及到了fsync/fdatasync这些系统调用[system call](什么是系统调用?它与库函数的区别在哪?参见这里)。接下来就简单的分析一下sync/fsync/fdatasync转载 2014-09-26 17:06:35 · 576 阅读 · 0 评论 -
Unix编程之size_t、ssize_t
From: http://blog.youkuaiyun.com/lalor/article/details/7426184对于赶时间的朋友,只看第一段就好了。 首先,我非常肯定以及确定的告诉你ssize_t是有符号整型,在32位机器上等同与int,在64位机器上等同与long int,有没有注意到,它和long数据类型有啥区别?其实就是一样的。size_t 就是无符号型的ssize_t,也就转载 2014-09-01 17:42:55 · 329 阅读 · 0 评论 -
C/C++中有关字长与平台无关的整数类型
From: http://blog.youkuaiyun.com/s04023083/article/details/5182604在C/C++中,整型的长度跟编译器相关,编译器的实现取决于CPU. 比如TC++是DOS16下的应用程序,DOS16是16位的操作系统,所以TC++中sizeof(int)==16;同理win32中sizeof(int)==32. C99标准定义一个叫着的头文件转载 2014-09-01 16:39:41 · 707 阅读 · 0 评论 -
sys/types.h
sys/types.h中文名称为基本系统数据类型。在应用程序源文件中包含 以访问 _LP64 和 _ILP32 的定义。此头文件还包含适当时应使用的多个基本派生类型。尤其是以下类型更为重要:caddr_t 核心地址。clock_t 表示系统时间(以时钟周期为单位)。comp_t 压缩的时钟滴答。dev_t 用于设备号。fd_set 文件描述集。fpos_t 文件位置。转载 2014-09-01 17:39:13 · 787 阅读 · 0 评论 -
C/C++语言标准
From:http://www.cnblogs.com/emituofo/archive/2012/07/20/2600481.htmlC语言标准写在前面:K&R C不用说。个人以为,我们平常说的标准C,指的是ANSI C,ISO C,C89,C90。K&R C 1978年,丹尼斯•里奇(Dennis Ritchie)和布莱恩•柯林汉(Brian Kernigha转载 2014-09-23 12:27:44 · 800 阅读 · 0 评论 -
-fno-rtti -fno-exceptions
-fno-rtti 禁用运行时类型信息-fno-exceptions 禁用异常机制一般只有对程序运行效率及资源占用比较看重的场合才会使用, 如果要做这两个的话最好连libstdc++和其他所有的的c++库都用这两个参数重新编译一遍, 否则光是你自己的程序禁用了这两个特性, 而别的库依然开着, 效果就大打折扣了转载 2014-09-23 12:13:13 · 7064 阅读 · 0 评论 -
Android.mk file syntax specification
From: http://www.kandroid.org/ndk/docs/ANDROID-MK.htmlIntroduction:This document describes the syntax of Android.mk build file written to describe your C and C++ source files to the AndroidNDK.转载 2014-12-04 11:10:19 · 495 阅读 · 0 评论 -
实战Makefile.am
实战Makefile.amMakefile.am是一种比Makefile更高层次的规则。只需指定要生成什么目标,它由什么源文件生成,要安装到什么目录等构成。表一列出了可执行文件、静态库、头文件和数据文件,四种书写Makefile.am文件个一般格式。表 1Makefile.am一般格式对于可执行文件和静态库类型,如果只想编译,不想安装到系统中,可以用noinst_PROGR转载 2015-01-28 14:06:04 · 517 阅读 · 0 评论 -
linux下c —open函数
好记性胜不过烂笔头头文件#include /*提供类型pid_t,size_t的定义*/#include#include函数原型int open(const char *path, int oflags,mode_t mode);函数说明 open建立了一条到文件或设备的访问路径。open函数一般用于打开或者创建文件,转载 2015-02-05 21:29:46 · 1619 阅读 · 0 评论 -
C++ SIGSEGV check list
C++丢了很长时间了,没想到还有捡回来的一天,各种不适应,尤其是指针相关的,SIGSEGV这几天真没少见,总结下自己遇到的SIGSEGV case,下面这个可以作为一个check-list: null指针解引用,这个就不说了,解引用前自己做好预防。要求返回值的函数实现时没有返回值,按理说IDE会提示,但是目前看AS很多时候是不会提示的。使用RAII对象管理内存时,因为临时对象析构的原因导致RA原创 2017-04-18 20:20:03 · 2014 阅读 · 0 评论 -
Android InputEvent(Motion/Key/Sleep....) 流程跟踪
ViewRootImpl的setView()函数中(这个函数被调用代表着Activity的界面基本建立)会建立一群InputStage并以职责链模式链接起来进行协同工作:syntheticInputStageviewPostImeStagenativePostImeStageearlyPostImeStageimeStageviewPreImeStagenativePreImeStage原创 2015-11-20 16:18:36 · 3357 阅读 · 0 评论 -
SQLite 源码笔记(1)
SQLiteDatabaseSQLiteConnectionPoolSQLiteConnection -> execute() -> nativeExecute(mConnectionPtr, statement.mStatementPtr);/home/fyf/WORK/kitkat/mydroid/frameworks/base/core/jni/android_database_SQLi原创 2015-08-25 12:20:49 · 688 阅读 · 0 评论 -
spdy_buffer
spdy_binary_buffer: 工具类,作用就是一个可以自动扩容和内存空间回收的buffer(主要用来保存http和spdy传输的内容),单位为字节(类型为unsigned char, 因为字符集的值都是>=0的) 几个关键的属性:(1) unsigned char *buffer: 指向保存内容的那部分内存的开头。(2) size_t len: len表示当前buffer的第原创 2014-09-24 11:28:10 · 597 阅读 · 0 评论 -
spdy_header
spdy_header: 一个工具类,是http he a 因为http header本身的key-value特性,因此使用了hashMap来保存httpheader, key是header的名称,而value是header的内容。对于碰撞,则采用了拉链法来解决,hashMap的bucket的尺寸由HTABLE_SIZE来编译期决定。 采用的hash算法比较简单,简单的字符原创 2014-09-23 15:59:06 · 744 阅读 · 0 评论 -
spdy_proxy(一)
stream_userdata 的 buffer 和 end_of_file在两个jie原创 2014-10-16 21:50:31 · 934 阅读 · 0 评论 -
JNI学习积累之一 ---- 常用函数大全
本文原创,转载请注明出处:http://blog.youkuaiyun.com/qinjuning 最近一段时间,在工作方面比较闲,分配的Bug不是很多,于是好好利用这段时间就着源代码看了些许模块, 主要方式 还是贼看贼看代码, 同时利用烧机的便利,加Log观看,基本上都能弄个脸熟 。心里想着该写点什么了?可是水平不够,再加上 包括很多真正实现地方--转载 2015-01-22 11:34:56 · 367 阅读 · 0 评论 -
从一个笔试题看C语言中float向double的提升问题
From: http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=28541347&id=4566930首先看一段来自一个笔试题的程序段:float f=1.1; double d=1.1; cout //0这段代码输出0,那么为什么同为1.1的doble和float不相等呢?我们知道f转载 2014-12-15 14:31:33 · 830 阅读 · 0 评论 -
poll&&epoll实现分析(一)——poll实现
From: http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=28541347&id=42367790.等待队列在Linux内核中等待队列有很多用途,可用于中断处理、进程同步及定时。我们在这里只说,进程经常必须等待某些事件的发生。等待队列实现了在事件上的条件等待: 希望等待特定事件的进程把自己放进合适的等待队列,并放弃控转载 2014-12-15 14:12:07 · 477 阅读 · 0 评论 -
dup和dup2函数
dup和dup2也是两个非常有用的调用,它们的作用都是用来复制一个文件的描述符。它们经常用来重定向进程的stdin、stdout和stderr。这两个函数的原形如下: C代码 #include int dup( int oldfd ); int dup2( int oldfd, int targetfd ); d转载 2015-02-05 21:25:22 · 446 阅读 · 0 评论 -
gcc/g++中生成map文件
gcc/g++中生成map文件在通过gcc/g++间接调用链接程序ld时,所有的ld选项前必须加上“-Wl,”,因为-Map是ld的选项。所以,要让g++生成mapfile,需要增加编译参数“ -Wl,-Map,mapfile”。例:gcc -o helloworld helloworld.c -Wl,-Map,helloworld.map转载 2015-02-06 11:48:45 · 2347 阅读 · 0 评论 -
Android STL PORT
From: http://www.cnblogs.com/yaozhongxiao/p/3806494.htmlndk中包含了stl对应的库,在$(NKD_HOME)/sources/cxx-stl/stlport/stlport有关Android NDK的C++ STL开发相关总结如下:从Android NDK r5开始支持了STL Port,在这个版本开始就可以使用部分转载 2015-02-06 11:44:20 · 694 阅读 · 0 评论 -
Android NDK开发指南(一) Application.mk文件
From: http://www.cnblogs.com/yaozhongxiao/archive/2012/03/06/2381586.htmlApplication.mk目的是描述在你的应用程序中所需要的模块(即静态库或动态库)。Application.mk文件通常被放置在 $PROJECT/jni/Application.mk下,$PROJECT指的是您的项目。 简介转载 2015-02-06 11:27:03 · 556 阅读 · 0 评论 -
工作积累之NDK编译STL
From: http://blog.youkuaiyun.com/startwithdp/article/details/7050732 方法:1.在jni目录下新建Application.mk; 加入 APP_STL := stlport_static 右边的值还可以换成下面几个:system - 使用默认最小的C++运行库,这样生成的应用体积小,内存占用小,但部分功能将无法支持st转载 2015-02-06 11:46:09 · 391 阅读 · 0 评论 -
R_X86_64_32 & could not read symbols: Bad value编译
在suse64位平台上,libx a是一个静态库,可以编译成功,但另一动态库链接它时报如下错误: usr lib64 gcc x86_64-suse-linux 4 1 0 x86_64-suse-linux bin ld: usr local libx a(z o): relocatio在suse64位平台上,libx.a是一个静态库,可以编译成功,但另一动态库链接它时报如下错误:转载 2014-09-23 11:24:28 · 599 阅读 · 0 评论 -
C++函数后面的throw()
From: http://www.cnblogs.com/mumuliang/archive/2012/03/22/2411521.html inline HBITMAP CImage::Detach() throw()它是函数提供者和使用者的一种君子协定,标明该函数不抛出任何异常。之所以说是君子协定,是因为实际上内部实现是需要人肉确保。 如果一个标明throw()的函数内部发生了转载 2014-08-28 15:54:48 · 561 阅读 · 0 评论 -
C++ 模板 使用 enum 代替 typename
enum testEnum {A, B, C};template class TestClassTemplate {public: void print() { printf("common\n"); }};template <>class TestClassTemplate {public: void print() {原创 2014-08-28 12:15:00 · 4554 阅读 · 0 评论 -
gcc选项-g与-rdynamic的异同
Fgcc的-g,应该没有人不知道它是一个调试选项,因此在一般需要进行程序调试的场景下,我们都会加上该选项,并且根据调试工具的不同,还能直接选择更有针对性的说明,比如-ggdb。-g是一个编译选项,即在源代码编译的过程中起作用,让gcc把更多调试信息(也就包括符号信息)收集起来并将存放到最终的可执行文件内。相比-g选项,-rdynamic却是一个连接选项,它将指示连接器把所有符号(而不仅转载 2014-07-11 07:48:25 · 1485 阅读 · 0 评论 -
gdb调试Segmentation fault经验总结
from http://blog.sina.com.cn/s/blog_7ce2cb410100rmy4.html当程序发生Segmentation fault的时候,大多数时候可以用printf就能搞定。 但有时候可能遇到比较复杂的情况:比如,程序是已经执行完我们自己写的程序的最后一句代码了才Segmentation fault。这种情况printf就无用。就要请出大名鼎鼎转载 2014-07-11 07:44:48 · 2042 阅读 · 0 评论 -
ostringstream的使用
From: http://blog.youkuaiyun.com/liminled/article/details/6645451在std中还有个ostringstream这么方便的格式化输出的工具 [cpp] view plaincopystd::string generate() { ostringstream osm; osm "xxxx "转载 2014-08-04 10:09:59 · 2580 阅读 · 0 评论 -
C++ 工程实践(1):慎用匿名 namespace
From: http://blog.youkuaiyun.com/solstice/article/details/6186978匿名 namespace (anonymous namespace 或称 unnamed namespace) 是 C++ 的一项非常有用的功能,其主要目的是让该 namespace 中的成员(变量或函数)具有独一无二的全局名称,避免名字碰撞 (name collision转载 2014-08-03 12:28:30 · 503 阅读 · 0 评论 -
chromium template_util.h 解析
// Copyright (c) 2011 The Chromium Authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file.#ifndef BASE_TEMPLATE_UTIL原创 2014-07-17 18:04:26 · 754 阅读 · 0 评论 -
c++中void应用
From: 1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 void几乎只有“注释”和限制程转载 2014-08-01 14:06:51 · 3661 阅读 · 0 评论