C/C++
huangkangying
这个作者很懒,什么都没留下…
展开
-
巧用awk快速拷贝ldd库文件依赖
写一个SHELL脚本,自动拷贝依赖的动态库。touch test.shdep=$( ldd $1 | awk '{if (match($3,"so")){print $3}}' ) cp -L -n $dep $2 -n: don’t overwrite, 不覆盖原有文件-L: follow symbolic link in source, 如果是软链接,则拷贝源链接文件这里awk会使用默认的空格分割符对ldd输出的每一行进行分割,如果分割出的第3个参数中含有"so",则将其赋值给d原创 2020-05-14 21:58:07 · 1050 阅读 · 0 评论 -
解决ubuntu sudo更改LD_LIBRARY_PATH的问题
问题描述在ubuntu下面运行某个可执行文件遇到can't find xxx lib的时候,可以通过export LD_LIBRARY_PATH=xxx来解决,但如果这个可执行文件需要sudo权限时,以上的方法会失效。如何才能修改sudo下面的链接库地址呢?解决办法sudo env LD_LIBRARY_PATH=lib_path ./app_namelib_path: 需要链接的库的地址app_name: 需要运行的程序名称...原创 2020-05-14 20:41:53 · 4273 阅读 · 1 评论 -
VS2012 error : Required file tracker.exe is missing 解决办法
初次使用VC2012 ,结果报告error : Required file tracker.exe is missing 。从百度上搜索一遍,很多解决办法不靠谱,搜到靠谱的是英文版连接如下:http://connect.microsoft.com/VisualStudio/feedback/details/540902其实就是找到你的项目文件xxxx.vcxproj,使用编转载 2016-02-03 09:35:42 · 4467 阅读 · 0 评论 -
C++常见面试题
1.在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?答:首先,extern是C/C++语言中表明函数和全局变量作用范围的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。extern "C"是连接申明(linkage declaration),被转载 2016-03-01 20:08:11 · 17553 阅读 · 0 评论 -
C语言函数调用参数压栈的相关问题
参数入栈的顺序以前在面试中被人问到这样的问题,函数调用的时候,参数入栈的顺序是从左向右,还是从右向左。当时没有想清楚,随口就说从右向左。其实这个回答是不完全正确的。因为其实入栈的顺序,不同的体系架构是不一样的,举例来说, 看下面的代码:#include <stdio.h>int test(int a, int b){ printf("address of a %x.\n", &a);原创 2015-04-20 20:19:09 · 7137 阅读 · 0 评论 -
C++ 虚函数表解析
C++ 虚函数表解析 原文链接:http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,转载 2015-04-01 15:24:56 · 359 阅读 · 0 评论 -
C++所对应的数据结构
原文链接:http://blog.csdn.net/guogangj/article/details/2036785提示1:对“内存结构”表示有疑问或不解的,先参考:http://blog.csdn.net/guogangj/archive/2007/05/25/1625199.aspx,本文使用的表示方法和VC6的Memory视图一致,即:左上表示低位。 提示2:下文提到的“转载 2015-03-23 21:13:26 · 1033 阅读 · 0 评论 -
C++重载相关面试问题
C++重载相关面试问题Table of Contents1. 什么是重载,重载的定义是什么?2. 重载函数为什么不能返回值来区分?3. 重载(overload)与重写(override)的区别是什么?4. 什么是重定义(redefining)?5. 请写出++操作符的前缀(prefix)和后缀(postfix)重载函数?1 什么是重载,重载的定义是什么?原创 2015-03-09 23:00:08 · 1107 阅读 · 0 评论 -
我的排序算法小结
<br />1. 插入排序<br />基本思想:将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增为1的有序表。算法时间复杂度O(n^2)<br />1 int insert_sort(int *array, int len) <br />2 { <br />3 int i, j; <br />4 int key; <br />5 <br />6 for (j = 1; j < len; j++) <br />原创 2011-03-09 21:30:00 · 889 阅读 · 0 评论 -
C语言中史上最愚蠢的Bug
C语言中史上最愚蠢的Bug2011年8月26日陈皓发表评论阅读评论 38,650 人阅读 本文来自“The most stupid C bug ever”,很有意思,分享给大家。我相信这样的bug,就算你是高手你也会犯的。你来看看作者犯的这个Bug吧。。首先,作者想用一段程序来创建一个文件,如果有文件名的话,就创建真正的文件,如果没有的话,就调用?tmpfile()?创建转载 2015-03-26 19:37:28 · 934 阅读 · 0 评论 -
C语言-循环队列的简单实现
用C语言实现一个循环队列并不难。关键点在于对队列 "空" 和 "满" 状态的判断。正如《C和指针》中所描写的,有两种方法来实现对队列空和满状态的判断。在数组中空一个元素不填,起始时, 置tail为0, front为1, 这样一来, 实现要浪费queue buffer中两个元素空间:队列空: (tail+1) % queue_size == front队列满: (tail+2原创 2015-03-04 22:02:47 · 3485 阅读 · 0 评论 -
C语言你不知道的事(2)typedef和#define的区别
typedef和宏的关键性区别主要体现在两个方面:1. 可以用其它类型符对宏定义的类型符进行扩展,而typedef却不行#define peach intunsigned peach i; /* OK*/typedef peach int;unsigned peach i; /*Error!*/2. 在连续几个变量的声明中,typedef能保证这个变量的类型一致,而define则原创 2014-12-30 19:03:37 · 773 阅读 · 0 评论 -
C语言中你不知道的事(3)-- 函数指针、指针数组及数组指针
函数指针:函数指针是指向函数的指针,它代表的就是函数的地址:如:int (*fun)(int *);以上的代码声明了一个输入参数为int *, 返回值的int的函数指针fun.指针数组:指针数组应该是比较常见了,如下:int *p[10];数组指针:指向数组的指针int a[4][5];int (*p)[5] = a;扩展:函数指针数组原创 2014-12-30 19:18:31 · 703 阅读 · 0 评论 -
关于C语言你不知道的事(1)–指针和数组的区别
关于C语言你不知道的事(1)–指针和数组的区别Table of Contents1 一个很多人都会做错的面试题 2 数组与指针的差别 2.1 数组和指针是如何访问的 2.2 数组和指针可以相同么 1 一个很多人都会做错的面试题 仔细查看以下代码,print_arr_addr和print_g_arr_addr的打印输出地址相同么?为什么#i原创 2014-12-29 21:59:43 · 4516 阅读 · 0 评论 -
关于函数调用方式`__stdcall`和`__cdecl`
关于函数调用方式__stdcall和__cdecl关于函数调用方式__stdcall和__cdecl__stdcall__cdecl两者的相同点与不同点实例__stdcall__stdcall的全称是standard call。是C++的标准调用方式。 函数参数的入栈顺序为从右到左入栈。函数返回时使用retn x指令,其中x为调整堆栈的字节数。这种方式叫做自动清栈。即被调用的函数的参数个数是原创 2016-02-20 15:28:10 · 930 阅读 · 0 评论 -
如何合并多个*.so库文件
问题:最近打包SDK, 需要把多个*.so文件合并。 通过google发现,*.so文件不能直接合并,因为其中已经没有重定向信息。但多个静态库文件是可以合并成一个动态库文件的。解决办法:先把所有要打包的库编译生成静态库,然后使用如下命令把它们合并成一个*.so:gcc -shared -o c.so -Wl,--whole-archive a.a b.a -Wl,--no-whole-archiv原创 2016-11-10 19:47:52 · 15226 阅读 · 0 评论 -
C语言陷阱之Enum
问题先看代码:typedef enum { xxx_inv = -1, xxx_0 = 0, xxx_1 = 1, xxx_max = 64,} enum_t;enum_t idx;for (idx = 0; idx < 256; idx++) { // do something with idx func(idx);}上面的代码有问题吗?如果你觉得没有...原创 2019-09-29 18:40:59 · 572 阅读 · 0 评论 -
__attribute__((packed,aligned(4)))及其相关定义的对比
使用C语言操作硬件寄存器的精髓在于结构体指针的灵活应用,而结构体的定义一般又需要对数据成员在内存中如何存放有精准的把握。这时候就需要一些属性关键字来修饰所定义的结构体,使结构体中的成员变量按我们想要的规则存放。对于gcc而言,__attribute__就是这样一个关键字。在读一些C语言开源代码的时候会经常看到一些复杂的struct定义之后跟着__attribute__的选项用来指定struct的...原创 2019-09-23 11:28:50 · 6860 阅读 · 4 评论 -
关于-fPIC, -fpic, -fpie, -fPIE的一点理解
最近在编译动态库文件,用到-fPIC编译选项。查了下GNU的手册:-fpicGenerate position-independent code (PIC) suitable for use in a shared library, if supported for the target machine. Such code accesses all constant addresses th...原创 2019-05-24 18:16:48 · 50944 阅读 · 1 评论 -
TLC59108 arduino驱动示例
以下程序可以直接跑在arduino UNO开发板上:#include <Wire.h>#define HW_RESET_PIN 8void test_i2c(){ Wire.beginTransmission(0x48); Wire.write(0x00); Wire.write(0x01); byte x = Wire.endTransmi...原创 2019-02-28 17:47:41 · 945 阅读 · 0 评论 -
OpenCV Cross Compile
Steps:Clone latest openCV source from github: git clone https://github.com/opencv/opencv.git Create a build directory: mkdir ./opencv/platforms/linux/arm_build Run cmake inside the build directory...原创 2018-12-09 20:22:38 · 1337 阅读 · 0 评论 -
I2C协议小结
I2C协议两线串行协议(SCL, SDA),主从模式,支持多主控,但在同一时刻只能有一个主控地址组成:7bit 地址数组+1bit读写位, 共8bit。地址范围0~127, 0地址为广播地址。一次发送8bit数据,数据格式为大端模式。速率:标准模式100Kbps, 快速模式400Kbps,高速模式3.4Mbps。总线互连注意SDA和SCL都需要上拉。 总线时序图SCL由master提供原创 2017-06-13 15:54:32 · 3254 阅读 · 0 评论 -
Linux用户空间增加i2c设备
每个i2c总线目录下面会提供两个文件节点: new_device, delete_device 内核必须要知道在设备挂在哪个总线和设备地址才能实例化该设备。 具体的做法如下: 增加“eeprom”设备,地址为0x50:echo eeprom 0x50 > /sys/bus/i2c/devices/i2c-3/new_device删除 “eeprom”设备:echo 0x50 > /sys/bu原创 2017-11-21 16:58:41 · 3381 阅读 · 2 评论 -
高斯牛顿法(C++实现)
#include <iostream>#include <cmath>#include <Eigen/Eigen>using namespace Eigen;#define ITER_STEP (1e-5)#define ITER_CNT (100)typedef void (*func_ptr)(const VectorXd &input, const VectorXd ¶原创 2017-11-02 18:39:43 · 2481 阅读 · 0 评论 -
高斯牛顿法(C++实现)
#include #include #include using namespace Eigen;#define ITER_STEP (1e-5)#define ITER_CNT (100)typedef void (*func_ptr)(const VectorXd &input, const VectorXd ¶ms, VectorXd &output);voi原创 2017-11-02 18:37:52 · 1445 阅读 · 0 评论 -
Working of __asm__ __volatile__ (“” : : : “memory”)
creates a compiler level memory barrier forcing optimizer to not re-order memory accesses across the barrier.For example, if you need to access some address in a specific order (probably because t翻译 2017-09-01 13:42:04 · 373 阅读 · 0 评论 -
Eigen矩阵运算库使用记录
http://blog.csdn.net/shuzfan/article/details/52367329最近一直在做工程上的事情,比较多的使用了Eigen矩阵运算库。简单说一下Eigen的特点:(1) 使用方便、无需预编译,调用开销小(2) 函数丰富,风格有点近似MATLAB,易上手;(3) 速度中规中矩,比OpenCV快,比MKL、openBLAS慢转载 2017-06-13 14:09:22 · 1045 阅读 · 0 评论 -
Opencv标定相机
使用Opencv标定Camera的代码如下:void help(char *argv[]) {}int calib_camera(int argc, char* argv[]) { int n_boards = 0; // Will be set by input list float image_sf = 1.0f;//0.5f; float delay = 1.f;原创 2017-06-23 16:12:57 · 625 阅读 · 1 评论 -
Windows Overlapped I/O详解
http://www.cnblogs.com/skyofbitbit/p/3650140.htmlI/O设备处理必然让主程序停下来干等I/O的完成,对这个问题有方法一:使用另一个线程进行I/O。这个方案可行,但是麻烦。 即 CreateThread(…………);创建一个子线程做其他事情。 Readfile(^…………);阻塞方式读数据转载 2017-06-23 10:56:01 · 13256 阅读 · 0 评论 -
浮点数(IEEE 754)
http://www.cnblogs.com/kingwolfofsky/archive/2011/07/21/2112299.html浮点数1. 什么是浮点数在计算机系统的发展过程中,曾经提出过多种方法表达实数。典型的比如相对于浮点数的定点数(Fixed Point Number)。在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置。货币的表达就可以使用这种方式,比转载 2017-03-10 12:18:07 · 1223 阅读 · 0 评论 -
(微软面试100题)判断两个链表是否相交
问题描述:给定两个链表LinkList1, LinkList2, 判断两个链表是否相交?解题思路:这是一道常考题了,解题的思路主要如下:1.首先要考虑到链表是否有环?2. 如果链表没有环,则可以分别遍历链表,如果相交,最后两个指针一定会相遇3. 如果有环且相交, 那么环上面的任意一个节点都一定会出现在另一个链表上。那么就变成了判断 环上的点是否链表上的问题。关原创 2013-01-30 20:37:47 · 775 阅读 · 0 评论 -
C++之父:C++ 的五个普遍误解(3)
C++之父:C++ 的五个普遍误解(3)2014/12/25 | 分类: C/C++, 开发 | 0 条评论 | 标签: BJARNE STROUSTRUP, C++分享到:7D2前端技术论坛——2014绽放JAVA遇见HTML——JSP篇Java Web开发技术应用——过滤器PS大神通关教程本文由 伯乐在线 -转载 2014-12-25 21:19:54 · 1096 阅读 · 0 评论 -
C++ 的五个普遍误解(2):垃圾回收
C++ 的五个普遍误解(2):垃圾回收2014/12/22 | 分类: C/C++, 开发 | 2 条评论 | 标签: BJARNE STROUSTRUP, C++, 垃圾回收分享到:13Java Socket应用---通信是这样练成的洪大师带你解读Symfony2框架用字体在网页中画ICON图标快速入门ThinkPHP框架—理论转载 2014-12-25 21:16:49 · 3007 阅读 · 1 评论 -
STM32下串口的使用
STM32下关于串口的固件库写得相当好了,以下只是本文对串口库的一点点封装:/*HKY_uart.h*/#ifndef _HKY_UART_H_#define _HKY_UART_H_#include "stm32f10x_lib.h"//#include "platform_config.h"#define GPIO_RTSPin GPIO_Pin_原创 2011-12-05 11:19:15 · 2042 阅读 · 1 评论 -
2011 网易公司笔试题
问题描述:请编写一个程序,能打印出如下规律的字符:(a)(b)(c)...(z)(a,b)(a,c)...(a,z)...(b,c)(b,d)...(b,z)...(y,z)...(a,b,c)(a,b,d)...(a,b,z)...(x,y,z)...(a,b,c,d.原创 2011-10-12 15:46:32 · 1703 阅读 · 1 评论 -
递归颠倒栈
问题描述:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1 在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5 处在栈顶。代码: 1 #include 2 3 int stack[256]; 4 int top = -1;原创 2011-10-14 10:09:37 · 1887 阅读 · 0 评论 -
排列和组合算法 C语言经典实现
排列和组合算法是考查递归的常见算法,这两种算法能用递归简洁地实现。本人在经过多次摸索和思考之后,总结如下,以供参考。程序代码如下: 1 #include 2 #include 3 4 char array[] ="abcd";原创 2011-10-12 17:51:54 · 35352 阅读 · 4 评论 -
猴子分桃问题
问题描述:五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;......其他几只猴子也都是 这样分的。问:原创 2011-10-12 22:21:25 · 9087 阅读 · 0 评论 -
面试笔试题
1 昨天参加一公司笔试,给几道算法题整懵了,其实也不难,但好久没有碰算法,只是有思路,要让我在这么短的时间内写出程序来还是不行。 2 这里将其中一道稍微复杂一点的算法题写下来,以此小结。 3 4 题目描述: 5 将N个鸡蛋放入到M个篮子中去(N>M),保原创 2011-03-28 15:47:00 · 1888 阅读 · 3 评论 -
求一个字符串中的最长连续子串
<br /> 求一个字符串中的最长子串:<br /> 例如"abababcdef" 则最长子串是"ab", 长度为2<br /><br /><br /> 1 #include <iostream><br /> 2 #include <vector><br /> 3 #include <string><br /> 4 using namespace std;<br /> 5 <br /> 6 <br /> 7 pair<int ,string> fun(const string &str)<br /> 8 {转载 2011-05-06 15:29:00 · 950 阅读 · 0 评论