C/C++综合
文章平均质量分 88
xiaojun11-
勤能补拙,奋发ing
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ 字节对齐的总结(原因和作用)
一、介绍什么是字节对齐 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。字节对齐的原因和作用 各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节转载 2021-09-13 09:12:18 · 454 阅读 · 0 评论 -
深析静态链接库和动态链接库相同函数覆盖及库调用顺序问题*************
注意:编译器为gcc,若使用g++,请在库里面加上extern “C” 两个静态库 首先测试静态链接库,大概的代码如下: liba.c#include<stdio.h>#include<stdlib.h>#include"libA.h"void libA(){common();}void common(){printf("libA common!\n");} liba.h#i...转载 2021-05-12 16:07:11 · 1276 阅读 · 0 评论 -
C/C++ 根据域名获取IP地址
转载:https://blog.youkuaiyun.com/what951006/article/details/78803995通过域名获得具体的ip地址#include <winsock.h>#pragma comment(lib,"Ws2_32.lib")BOOL GetRealIpByDomainName(char *szHost, char szIp[50][100], int *nCount){ WSADATA wsaData; HOSTENT *pHo..转载 2020-09-09 12:44:38 · 1392 阅读 · 0 评论 -
解析通信字符串命令
思路:是类似于命令行参数一样,通过空格 将命令解析成 一个个的字符串, 存储到vector中,然后遍历vector 类似于 string str = "broadcast -type create -playlist 11;12;13; -o outUrl "; //最后需要一个空格 vector<string> vec; string ...转载 2016-10-12 09:19:33 · 1063 阅读 · 0 评论 -
C++11之std::function和std::bind
转载自:https://www.cnblogs.com/jiayayao/p/6139201.html 多谢版主std::function是可调用对象的包装器,它最重要的功能是实现延时调用:#include "stdafx.h"#include<iostream>// std::cout#include<functional>// std::functionv...转载 2018-07-10 17:36:28 · 281 阅读 · 0 评论 -
UUID生成方法总结
转自:http://puxx.blog.ustc.edu.cn/index.php/2013/06/28/uuid%E7%94%9F%E6%88%90%E6%96%B9%E6%B3%95%E6%80%BB%E7%BB%93/ UID简介 摘自维基百科通用唯一识别码(英语:Universally Unique Identifier,简称UUID)是一种软件建构的标准,亦为自由软...转载 2016-10-28 18:05:58 · 3359 阅读 · 0 评论 -
位操作基础篇之位操作全面总结
Title: 位操作基础篇之位操作全面总结Author: MoreWindowsE-mail: morewindows@126.comKeyWord: C/C++ 位操作 位操作技巧 判断奇偶 交换两数 变换符号 求绝对值 位操作压缩空间 筛素数 位操作趣味应用 位操作笔试面试位操作篇共分为基础篇和提高篇,基础篇主要对位操作进行全面总结,帮助大家梳理知识...转载 2016-07-11 17:30:31 · 387 阅读 · 0 评论 -
linux C源码下载地址
这个得去gnu官网下载, C标准库(GNU) 对应glibc ,C++库 对应 libstdc++glibc: http://git.savannah.gnu.org/cgit/hurd/glibc.git/libstdc++ : ftp://gcc.gnu.org/pub/gcc/releases/转载 2018-12-20 15:25:37 · 816 阅读 · 0 评论 -
gcc使用---动态库中链接静态库
源文章地址:https://blog.youkuaiyun.com/edwardlulinux/article/details/56812636最近自己的项目中遇到一个问题:编译一个动态库,动态库中使用了静态库的函数如下图所述问题来了怎么编译最终得到一个带有静态链接的动态库libxxx.so?生成静态库libxxx1 gcc -o xxx1.o -c xxx1.c ...转载 2019-02-12 11:25:12 · 1947 阅读 · 0 评论 -
如何识别C++编译以后的函数名
From:https://blog.youkuaiyun.com/u013525455/article/details/78180614 ,谢谢版主C/C++语言在编译以后,函数的名字会被编译器修改,改成编译器内部的名字,这个名字会在链接的时候用到。如果用backtrace之类的函数打印堆栈时,显示的就是被编译器修改过的名字,比如说_Z3foov 。 那么这个函数真实的名字是什么呢?每个编译器都有一...转载 2019-05-17 13:37:13 · 1236 阅读 · 0 评论 -
g++报错 [Error] invalid use of incomplete type 'class B'
#include "iostream"class B;class A {public:void func(B* para) {para -> B_func();}};class B {public:void B_func() {std::cout << "sml" << std::endl;}};int main() {B* T...转载 2019-07-04 15:22:33 · 2792 阅读 · 1 评论 -
union联合体使用详解
转载自:https://www.cnblogs.com/leezhxing/p/4619185.html 谢谢版主1.联合体联合体(union)与结构体(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在联合体中,各成员共享一段内存空间, 一个联合变量的长度等于各成员中最长的长度。应该说明的是, 这里所...转载 2019-07-05 10:37:13 · 1151 阅读 · 0 评论 -
C++编译期多态与运行期多态
阅读目录前言运行期多态编译期多态运行期多态与编译期多态优缺点分析运行期多态优点运行期多态缺点编译期多态缺点关于显式接口与隐式接口 正文回到顶部前言今日的C++不再是个单纯的“带类的C”语言,它已经发展成为一个多种次语言所组成的语言集合,其中泛型编程与基于它的STL是C++发展中最为出彩的那部分。在面向对象C++编程中,多态是OO三大特转载 2016-08-04 07:42:49 · 583 阅读 · 0 评论 -
c++运算符重载总结
c++的一大特性就是重载(overload),通过重载可以把功能相似的几个函数合为一个,使得程序更加简洁、高效。在c++中不止函数可以重载,运算符也可以重载。由于一般数据类型间的运算符没有重载的必要,所以运算符重载主要是面向对象之间的。1.一般运算符重载在进行对象之间的运算时,程序会调用与运算符相对应的函数进行处理,所以运算符重载有两种方式:成员函数和友元函数。成员函数的形式比较简单,转载 2016-08-04 07:34:23 · 509 阅读 · 0 评论 -
windows下如何获取当前时间
1 使用time_t time( time_t * timer ) 精确到秒 2 使用clock_t clock() 得到的是CPU时间 精确到1/CLOCKS_PER_SEC秒 3 计算时间差使用double difftime( time_t timer1, time_t time转载 2014-12-26 10:50:26 · 952 阅读 · 0 评论 -
windows下循环创建目录
std::string save_path=path; int dir_pos=3; dir_pos=save_path.find("\\",dir_pos+1); if (dir_pos { dir_pos=save_path.find("/",dir_pos+1); } while(dir_pos>=0) //生成的文件的目录 {原创 2014-12-26 14:04:13 · 759 阅读 · 0 评论 -
将一个整数写到两个字节的buffer中
int main(){ unsigned char buf[10] = {0}; int len = 1332; buf[0] = char(len); buf[1] = char(len>>8); short len1 = *(short*)buf; printf("buf = %d\n",len1); return 0;}原创 2014-12-04 16:00:30 · 1764 阅读 · 0 评论 -
大小端 Big-Endian 与 Little-Endian
应该说没做底层开发(硬件或驱动)的人很可能不会彻底理解大小端的概念,大小端不是简单的一句“大端在前”还是“小端在前”能够概括的问题。在cpu, 内存, 操作系统, 编译选项, 文件,网络传输中均有大小端的概念,这些东西加在一起,就很容易把人搞晕。我自己就晕过很久。 为方便说明,再做一些定义:(1) 内存可以存储若干个单元数据的物理设备,每个单元存储1个字节,每个单元有一个地址,其地转载 2014-12-31 14:00:01 · 1911 阅读 · 0 评论 -
DOS命令下的move路径的问题
move /? 查看帮助 但是一些文件不能 如果move d:/aa/b.tim e:/aa/b.tim 这样的话,会提示找不到相关的路径,是因为 d:/aa 这个源路径找不到,是window下支持的 反斜杠,就没有问题 move d:\aa\b.tim e:/aa/b.tim 这样就能成功Del 命令也是得用反斜杠xcopy 就原创 2015-01-20 12:09:58 · 2780 阅读 · 0 评论 -
VS2010创建ATL工程及使用C++测试COM组件
1.创建ATL项目,取名MyCom2. ATL 项目向导,勾选 【支持COM+ 1.0】和【支持部件注册器】,其他默认,点击完成。3.在该项目中添加类4.添加一个ATL简单对象5. ATL 简单对象向导,“简称”中输入类名称MyClass,其他输入框会自动填写,最下面的“ProgID”没有自动填写,最好自己写上一个,如MyCom.math,否则后面无法正确调用...转载 2015-03-30 12:17:47 · 2921 阅读 · 1 评论 -
C++ 编译器生成默认构造函数的四种情况
第一种是类成员中有成员是类对象,并且该成员的类含有默认构造函数,那么C++编译器会帮你给这个类也生成一个默认构造函数,用来调用其成员对象的构造函数,完成该成员的初始化构造。需要强调的是,如果这个成员的类也没有给出默认构造函数,那么C++编译器也不会帮你生成该类的默认构造函数。 第二种情况是这个类的基类有默认构造函数。那么C++编译器也会帮你生成该派生类的默认构造函数,以调用基类的转载 2016-06-30 12:13:12 · 672 阅读 · 0 评论 -
【图解】Linux下C程序进程地址空间布局
作者:沧海猎人 出处:http://blog.youkuaiyun.com/embedded_hunter 转载请注明出处 嵌入式技术交流QQ群:179012822我们在学习C程序开发时经常会遇到一些概念:代码段、数据段、BSS段(Block Started by Symbol) 、堆(heap)和栈(stack)。先看一张教材上的示意图(来源,《UNIX环境高级编程》一书),显示了进程转载 2016-07-04 16:34:03 · 454 阅读 · 0 评论 -
深度探索C++对象模型:4.Function语意学
第四章: Function语意学Nonstatic Member Functions(非静态成员函数)Point3d obj;Point3d *ptr = &obj;Point3d Point3d::normalize() const{register float mag =magnitude();Point3d normal;norma转载 2016-07-06 10:36:31 · 389 阅读 · 0 评论 -
C++中虚析构函数的作用
转载自:http://blog.youkuaiyun.com/starlee/article/details/619827 我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {}; virtual转载 2016-07-28 14:13:32 · 339 阅读 · 0 评论 -
C++拷贝构造函数(深拷贝,浅拷贝)
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include iostream>using namespace std;class CExample {private: int a;pub转载 2016-08-04 07:28:50 · 423 阅读 · 0 评论 -
c++头文件相互包含
一,问题提出:class B; class A { public: B b; }; class B { public: A a; }; 以上写法会造成头文件相互包含,是错误的。 因为在A对象中要开辟一块属于B的空间,而B中又有A的空间,是一个逻辑错误,无法实现的。我们只需要把其中的一个A类中的B类型成员改成指针转载 2014-12-20 17:19:30 · 740 阅读 · 0 评论
分享