
c
文章平均质量分 68
奔跑的橘子
朝闻道,夕死可矣。私信可能无法及时回复,公众号:我是小强何故乱翻书,可关注后私信我
展开
-
程序员应知应会之——结构体字节对齐 填充与打包
什么是字节对齐?一文搞懂字节对齐。翻译 2021-12-14 23:21:47 · 1789 阅读 · 0 评论 -
谈一谈c/c++程序的内存布局
浅谈c程序的内存布局,怎么查看程序的内存布局原创 2021-12-08 22:50:54 · 879 阅读 · 0 评论 -
Signed vs. Unsigned
在c中,当操作符的一个操作数为signed而另一个操作数为unsigned时,c会隐式的将signed 转换为 unsigned.这种隐式转换对于普通的算术运算影响并不大,可对于关系操作符确是不可预测的。例如对于一个采用2进制补码表示法的32位机有如下结果:翻译 2013-04-16 22:58:44 · 650 阅读 · 0 评论 -
rtklib2.4.3 b34 单点定位的一个bug
文章目录单点定位部分的一个问题老生常谈的root cause为何如此修改于是改动单点定位部分的一个问题这是一个本次更新引入的新问题,以前是没有的,如下图:如果没有对代码重新编译则不会遇到本文将要提到的问题,因为release版本的程序是不会有问题的如果对代码进行debug,那么也不会遇到这个问题如果尝试直接运行debug版本的程序,那么大概率会出现此问题老生常谈的root cause这个issue是由局部变量没有初始化引起的,因此想要fix这个issue也很简单,只要将这四个变量dion原创 2021-04-08 23:12:28 · 2335 阅读 · 0 评论 -
c++ 调用c代码 extern “C“ 确不能解决问题 unresolved external symbol
c++ 调用c代码 extern "C" 确不能解决问题 unresolved external symbol为什么不起作用了?cmake设置cpp工程visual studio工程设置源代码文件编译方式原创 2021-01-03 21:35:19 · 4086 阅读 · 2 评论 -
fseek与rewind到底有何区别
fseek与rewind到底有何区别,从接口本身的使用已经c运行库的实现两个角度看一下原创 2020-09-19 11:58:30 · 2245 阅读 · 0 评论 -
一个最简单的c日志实现及其改进
这是一个非常简单的c日志实现,但做了若干改进,如,c++实现控制台输出颜色控制根据日期或文件等大小分割等原创 2020-05-24 13:03:02 · 613 阅读 · 0 评论 -
c语言解析命令行参数的简单例子
假设要解析的命令行参数如下:getopts.exe [--port 9000] --freq 1 --size 5 --file filename#include <stdio.h>int getOpts(int argc, char **argv);int main(int argc, char* argv[]){ if(1!=getOpts( argc,...原创 2018-06-09 20:58:49 · 6423 阅读 · 0 评论 -
《TCP/IP网络编程》笔记12-并发服务器的实现方法-I/O复用
并发服务器的实现方法:多进程服务器多路复用服务器多线程服务器select函数是I/O复用的全部内容,server端代码如下:// echoSvrSelect.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "stdafx.h"#include <stdio.h>#include <stdlib.h...原创 2018-04-19 20:52:46 · 330 阅读 · 0 评论 -
《TCP/IP网络编程》笔记6-基于UDP的服务器端客户端
理解UDPUDP服务端与客户端的实现理解UDPUDP传输就像发信件,发快递,无法确定对方收到,数据也可能丢。UDP即使对方不在线,也可以“正常”发送数据,即对于发送者来说是不care接收端是否在线的,如果对方不在线,那么数据就全丢了。 但是,UDP也有优点,比如: 1. 编程简单 2. UDP不进行流控制,不需要发送ACK应答,也不需要发送SEQ分配给数据包序列号,性能会...原创 2018-04-18 21:28:54 · 324 阅读 · 0 评论 -
《TCP/IP网络编程》笔记1-理解套接字
概要linux socket通讯程序建立过程Linux文件操作-socket IOwindows socket通讯程序建立过程Windows IO 操作代码概要 此书主要面向c语言为基础的网络套接字编程初学者。此书的示例代码为C语言写成此书中示例代码首先强调可读性,然后是代码优化问题示例在Linux和Windows平台下都有实现,其实windows套接字...原创 2018-04-06 21:41:55 · 1040 阅读 · 0 评论 -
python 3 调用c/c++ 动态链接库 *.dll
首先,创建动态链接库(一个简单的北斗数据处理接口,为简化处理,实现部分直接返回值),代码如下:#ifndef _pro_header_2014_#define _pro_header_2014_#ifdef EXPORT_PRO_DLL#define PRO_API __declspec(dllexport)#else#define PRO_API __declspec(dllim原创 2016-11-16 21:44:36 · 9921 阅读 · 0 评论 -
rtklib使用kalman滤波进行高精度相对定位原理
rtklib使用kalman滤波进行高精度相对定位中浮点解的计算,流程主要分为以下几个步骤:1. 计算移动站概略坐标2. 计算卫星位置、速度3. 选择共视卫星4. 计算非差残差项和双差5. 使用kalman滤波计算浮点解6. 重新进行双差计算5. 计算固定解各个步骤的关键算法如下:1. 计算概略坐标 概略坐标的计算可以使用卡拉曼滤波方法或者加权原创 2017-10-15 20:08:43 · 14649 阅读 · 3 评论 -
《TCP/IP网络编程》笔记2-套接字类型及协议设置
概要套接字协议及其数据传输特性面向连接的套接字面向消息的套接字代码结果概要此节代码在笔记1理解套接字基础上略作修改而成。主要讲解了套接字协议。套接字协议及其数据传输特性创建socket需要下边这个函数:#include <sys/socket.h>int socket(int domain,int type,int protocol);...原创 2018-04-07 17:27:27 · 359 阅读 · 0 评论 -
ublox8 M8协议介绍
u-blox芯片是瑞士U- blox公司研发的一款芯片,输出数据可配置为以下三种协议: - NMEA - ublox - RTCM 其中NMEA和RTCM协议均为标准协议,不做介绍。下面简要介绍ublox自定义协议: 官方文档地址ublox协议三个特点1字节对其low-overhead 校验算法两级消息标识符,分为class id和消息id...原创 2018-03-31 14:11:43 · 22372 阅读 · 8 评论 -
《TCP/IP网络编程》笔记5-基于TCP的服务器端客户端2
概述回声客户端的完美解决TCP工作原理tcp连接建立的三次握手数据交换断开连接解决回声客户端问题的实现概述上一节已经给出了服务端和客户端的实现,为何还有这第二节? a. 上一节中的回声客户端是有问题的 问题的来源是tcp的传输特性:TCP传输的无边界性。这样造成了两个后果,第一. client端调用write后并无法保证数据立即传递,可能发生多次调用一次...原创 2018-04-14 21:51:47 · 334 阅读 · 0 评论 -
《TCP/IP网络编程》笔记3-地址族与数据序列
概要实现概要 本章主要内容是搞清楚,网络通讯中的数据靠什么定位到目标应用程序?IP地址 - 唯一确定网络中的一台计算机 端口号 - 区分计算机中的不同端口 所以靠ip地址和端口号就确定了网络中的一个唯一应用程序,本章以下内容都是实现细节了。实现通过server端部分代码来理解地质族这一节,完整代码见笔记1。 // 此部分工作主要由bind...原创 2018-04-09 21:58:24 · 286 阅读 · 0 评论 -
printf(%*.*f,m,n,f)
c语言中每一种数据类型都有自己的专属占位符,如整型的%d,浮点型的%f等,而*也是一个占位符,比较特殊而已。. *占位符要结合其他占位符使用,如以下代码: printf("n:%*d n:%d\n",6,7,7); double pi = 3.141592654589; printf("f:%*.*f f:%f",20,15,pi,pi);...原创 2018-03-27 17:29:54 · 8321 阅读 · 0 评论 -
《TCP/IP网络编程》笔记4-基于TCP的服务器端客户端1
概述理解tcp和udp基于tcp的服务器端/客户端迭代服务端/客户端的实现概述第一节理解套接字已经完成了tcp server的实现,但是处理完一个client请求之后就退出了。本节进行一下扩展。理解tcp和udp下图为tcp/IP协议栈的四层协议: 当然OSI规定了7层协议,但对于我们编写网络通讯程序来说理解这四层协议足够了链路层是物理链接的标准...原创 2018-04-12 21:56:49 · 388 阅读 · 0 评论 -
void*之阴沟里翻船
最近在做嵌入式开发,使用的是FreeRTOS系统,使用uxTaskGetStackHighWaterMark获取task剩余栈空间时遇到了问题。其中一个task获取剩余栈空间时总是返回0. 尝试增加任务堆栈大小没有任何效果。最终发现竟然是uxTaskGetStackHighWaterMark传入的task handle有问题。在获取handle时竟然是handle1 = &handle原创 2016-11-05 10:48:45 · 516 阅读 · 0 评论