C
郭忠伟-写录
总结|记录.
电力行业,扎根,参与开发:融合终端|能源控制器|集中器|采集器|拓扑识别设备.
涉及协议:mqtt,698,10x,3761,13762,645等.
联系方式:
邮箱:guozhongwl@163.com
微信:ai-3456------596---
展开
-
c语言,函数声明的误区
文章目录结论官方依据项目上,使用一个未声明的,返回值为float类型的函数;结果,返回值完全非预期.被整的怀疑人生.根深蒂固的一个错误认知:在C语言中,函数在调用前不一定非要声明。如果没有声明,那么编译器会自己主动依照一种隐式声明的规则,为调用函数的C代码产生汇编代码。结论期望,全部的人,全部的函数,都严格声明,不是很切实际.大的工程,人多眼杂.但是要谨记:返回值为非int类型的函数,务必要进行声明.至少:返回值为float/double类型的函数,务必要进行声明.官方依据C98原创 2020-11-28 15:31:21 · 2353 阅读 · 0 评论 -
linux shell脚本语法笔记(待续)
文章目录反引号单引号''双引号""单小括号 ()双小括号 (( ))单中括号 []双中括号[[ ]]反引号引用命令如果需要调用命令的输出,或把命令的输出赋予变量,则命令必须使用反引号包含,这条命令才会执行,反引号的作用和 $(命令) 是一样的,但是反引号非常容易和单引号搞混,所以推荐大家使用 $(命令) 的方式引用命令的输出。单引号’’关闭所有的特殊字符功能,使特殊字符变成普通字符,不...原创 2020-04-13 19:58:15 · 254 阅读 · 0 评论 -
Linux SIGPIPE信号产生原因与解决方法
文章目录原因SIGPIPE(Broken pipe)解决方法忽略SIGPIPE信号调整socket发送函数的flags参数参考:潜水同行技术群,有人遇到如下场景,拿出来分享/记录,场景:大厂的嵌入式平台,多个厂家,多进程间socket通信.,A进程作为客户端,连接作为服务器的B进程,A连接B,顺畅A进程close此套接字A连接B,失败………最后发现,A进程close套接字...原创 2020-04-10 20:15:12 · 3419 阅读 · 0 评论 -
C语言,指针强制类型转换与内存对齐.
指针类型强制转换,并进行解引用,引起的内存对齐问题.像*(int*)pData这样的指针类型强制转换,用的很多.终于在今天,正式入坑.此处留下测试场景,备忘.实例:测试程序:void TestPointer(void){ BYTE abytBuf[10]={0,1,2,3,4,5,6,7,8,9}; BYTE* pData=&abytBuf[5]; int dwData;...原创 2020-03-14 15:32:25 · 2992 阅读 · 3 评论 -
C语言逗号运算符
文章目录概述:实例:概述:逗号运算符表达式取最后一个值返回。特点:优先级别最低;自左往右执行表达式;返回值为表达式最后一个.实例:int i = 0;printf("%d\n", (i = 3*3 , i*5));输出: 45.赋值运算符优先级高于逗号运算符;先执行i=33后再执行i5;输出:i*5的值.详情,参见:C语言逗号运算符...原创 2019-11-17 12:42:40 · 439 阅读 · 0 评论 -
C程序中获取变量/宏名称的方法
在C程序中怎么打印一个变量的名称呢?利用#,看代码:#include "stdio.h"#define VNAME(value) (#value)int main(void){ int autoVal = 1; #define MACRO_TEST (6) printf("auto value name is %s\n",VNAME(autoVal)); printf("m...原创 2019-11-05 17:05:40 · 5119 阅读 · 0 评论 -
ln: 无法创建符号链接“ ...... “: 不支持的操作
现象:ln: 无法创建符号链接" … ": 不支持的操作***无法创建到" *****"的符号连接: 不支持的操作可能发生在:ln 创建链接时;解压缩文件过程中;原因:留意跨文件系统的ln操作,已知实测:虚拟机共享windows文件夹,在共享的文件夹内,不可以创建到linux本地目录的链接.但可以在linux本地目录 创建到 共享目录的符号链接.其他未测试....原创 2018-09-25 09:44:10 · 21816 阅读 · 8 评论 -
C语言 形参/实参的传递+ 指针+ 内存认知/使用
目标:指针的理解变量的生存周期及作用范围良好的动态内存申请和释放程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是...转载 2018-09-14 14:12:40 · 930 阅读 · 1 评论 -
C语言中函数参数的入栈顺序/变长参数/默认参数提升在可变长参数函数的陷阱
C语言中函数参数的入栈顺序:从右至左。参数入栈顺序是和具体编译器实现相关的。比如,Pascal语言中参数就是从左到右入栈的,有些语言中还可以通过修饰符进行指定,如Visual C++。即然两种方式都可以,为什么C语言要选择从右至左呢?C语言支持可变长参数原因:C语言支持可变长参数.参数的个数可以是不定个,在函数定义的时候用(…)表示. eg: printf函数的原型如下:i...转载 2018-09-10 12:04:21 · 408 阅读 · 0 评论 -
Linux C 常用网卡操作 (收集|整理)
实现静态IP地址,掩码,网关的设置#include <sys/ioctl.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <net/if.h>#include...转载 2018-08-28 11:04:23 · 1370 阅读 · 0 评论 -
读书笔记===C专家编程[1]
读书笔记,仅作为博主关心的、不理解的 相关点的解释,整理为笔记,方便之后的再次查看。第一章:C: 穿越时空的迷雾1、C简史:a&amp;amp;gt;Multics工程,目的是创建一个操作系统,,,,失败==经验 b&amp;amp;gt;UNIX系统的产生:一个叫Ken Thompson的研究员+同事 Dennis Ritchie 移植某些软件到PDP-7硬件平台;期间Ken Thompson 为PDP-7...原创 2018-07-09 00:47:59 · 282 阅读 · 1 评论 -
细说#Pragma Pack(n)与内存对齐
数据结构对齐与#pragma pack(n)之间的约束:关于 #pragma pack(n)与复合类型的数据(常见于结构体、数组等)对其方式约束,流传两种类型的解释:解释一:每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数,其中的n就是你要指定的“对齐系数”。 规则: 1. 数据成员原创 2016-06-13 23:27:26 · 839 阅读 · 0 评论 -
不同编译器 关于程序占用系统ROM、RAM情况的查看方法
不同编译器 关于程序占用系统ROM、RAM情况的查看方法:Code是代码占用的空间;RO-data是 Read Only 只读常量的大小,如const型;RW-data是(Read Write) 初始化了的可读写变量的大小;ZI-data是(Zero Initialize) 没有初始化的可读写变量的大小。ZI-data不会被算做代码里因为不会被初始化;简单的说就是在烧写的时候是FLASH中的被占用的空间为:Code + RO Data + RW Data程序运行的时候,芯片内部RAM使用的空间原创 2016-05-31 11:13:53 · 5289 阅读 · 0 评论 -
总结const的用法
1. const的用法:(1)定义常量(2)修饰函数的参数(3)修饰函数的返回值(4)修饰函数的定义体2. 用const 修饰函数的参数(1)const 只能修饰输入参数如果输入参数采用“指针传递”,那么加const 修饰可以防止意外地改动该指针。 例如:void StringCopy(char *strDestin转载 2016-05-26 20:18:35 · 483 阅读 · 0 评论 -
C中关键字enum--枚举--精巧的用法
基础普及:枚举在C/C++/c#中,是一个被命名的整型常数的集合,枚举在日常生活中很常见。例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,SATURDAY, 就是一个枚举。 枚举类型的使用方法: 一般的定义方式如下:enum enum_type_name{ ENUM_CONST_1, ENUM_CONST_2,原创 2015-12-02 21:39:35 · 1225 阅读 · 0 评论 -
字节对齐算法
算法实现:#define MEM_ALIGNMENT 4 //使用4字节对齐模式#define SIZEOF_STRUCT_MEM LWIP_MEM_ALIGN_SIZE(sizeof(struct mem))/** Calculate memory size for an aligned buffer - returns the next highest *...原创 2015-12-30 17:01:48 · 891 阅读 · 0 评论 -
c/c++里的 堆区 栈区 静态区 文字常量区 程序代码区
一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆(heap):由malloc,new等分配的空间的地址,地址由低向高增长(程序员释放)。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。转载 2015-10-24 16:28:45 · 976 阅读 · 0 评论 -
数组名和数组名取地址的区别
#include int main(){int a[5];printf("%d\n", a);printf("%d\n", &a);printf("%d\n", a + 1);printf("%d\n", &a + 1);printf("%d\n", &a[0] + 1);printf("---------------\n");printf("%d\n",sizeof(a));转载 2015-10-23 23:40:38 · 616 阅读 · 0 评论