- 博客(14)
- 收藏
- 关注
原创 CPP和C文件混合编译问题
在只有C++库而源码是C的情况下,使用封装层的技巧就是封装层使是用g++编译,但是只在封装头文件函数声明中加了extern “C”,而调用的C++静态库函数的#include未加,因此调用的函数还是按C++的规则解析,制作库时可以实现连接。通过2.2我们可以知道在C++的头文件中只要把函数的声明放在extern “C”{}的大括号范围之内,就可以让g++在编译这个函数时生成中间符号名时按照C的规则而不是按照C++的规则,所以这样的函数就可以和C的库进行共同链接。在C中是未进行定义的,可以用来检测编译环境。
2024-01-19 11:44:21 2166 1
转载 socket,tcp,http三者之间的区别和原理
socket,tcp,http三者之间的区别和原理http、TCP/IP协议与socket之间的区别下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置:7 应用层 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP6 表示层 例如XDR、ASN.1、SMB、AFP、NCP。
2023-11-27 15:38:40 60
原创 进程的学习
程序与进程程序是个静态的概念,进程是个动态的概念。只有程序运行的时候,则说明系统多了一个进程进程标志符:每个进程都有一个非负整数,用来表示唯一的ID,叫做pid。父进程与子进程如果A进程创建了B进程,那么A为父进程,B为子进程,父子进程是相对的概念。C程序的存储空间分配正文段:代码段,初始化的变量:数据段,未初始的变量:bss段堆:malloc函数相关申请空间的函数返回值存放的地址栈:函数调用后返回的地址...
2021-11-16 22:22:40 265
原创 关于CRC校验与C的实现(CRC16为例)
CRC校验码及C的实现最近蓝牙开发项目中有用到CRC-16校验码,在telink的官方库中其实是有包装好的CRC16函数,通过调用其函数,最后得出来的校验码与工具生成的校验码对不上,后面查资料发现计算CRC校验码有两种。一种是仅适用于常用的8位数据传输,校验宽度为16位,无反转,计算过程:(1)预制一个16位的存储空间CRC,并赋初始值(2)将要发送的数据打包成一个Byte数组(将数据分成多个Byte存储)(3)将第一个数据左移8位并与CRC当前值进行异或,结果放入CRC(4)判断当前CRC的最
2021-09-24 10:37:13 602
原创 Linux系统学习
Linux系统学习Linux系统提供的基本的API指令:打开-open读写-write/read光标定位- lseek关闭- close1、openopen函数的定义也可以在linux系统的终端输入 man 2 open来查看open函数的介绍与描述。#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathname, int fla
2021-09-17 22:37:42 63
原创 链表实现学生信息管理系统
用链表来实现学生成绩管理欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式
2021-09-14 22:48:23 7619
转载 VIM去除代码行号并缩进代码的技巧
最近发现一个很便利的代码复制技巧。如下当从网上找源代码时想沿用或直接复制粘贴,但是很多代码前面的都有带行号,需要去掉才能编译。通过VIM工具就能解决。转载于: link.这里将网上的一段代码粘贴到VIM中时的截图:是不是相当糟糕,使用正则表达式替换(前头的:表示输入模式):%s/[ \t]*\d{1,4}/ 立马得到如下结果现在效果好了不少,不过还有个问题,缩进不正确。 进入Normal模式,通过(命令右边为中文说明): gg 跳到行首 v 进入Visual
2021-09-08 11:07:08 341
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人