C语言
文章平均质量分 54
喵喵锤锤你小可爱
这个作者很懒,什么都没留下…
展开
-
GCC 中__attribute__((constructor)和__attribute__(((destructor))的注意事项。
属性__attribute__((constructor)和__attribute__(((destructor))__attribute__是可以修饰多个函数的,这给当然不例外。但是需要注意的是执行顺序,同一属性的函数执行顺序似乎不太好确定。原因的话等什么时候看看手册吧。如果是编译C++的话,我在WSL上用gcc(gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04))编译发现无法运行,但是用Win10上装的(gcc version 4.9.2 (i686原创 2022-02-06 10:39:13 · 840 阅读 · 0 评论 -
IoTP2PGate 两台物联网设备点对点通信快速实现方案
IoTP2PGate项目地址IoTP2PGate描述 为了解决物联网通信模块无法方便的与手机或其他物联网设备快速实现点对点的通信,IoTP2PGate应运而生。IoTP2PGate之主要用于简单的开发验证,毕竟写它的时候为的是毕业设计使用方便。特性支持且只支持两个物联网设备点对点通信。设备将(ip,port)看作另一个设备的地址,隐藏背后的服务器转发的过程。使用准备拥有公网IP,Linux系统的云服务器一台。(请确保服务器上的防火墙和云服务提供商平台提供的防火墙都已经打开相应的端口原创 2022-01-12 15:07:49 · 3486 阅读 · 0 评论 -
C语言位运算符号的疑问
#include <stdio.h>#define uchar unsigned charint main(){ uchar i = 0x0F; unsigned long long j = 0x0F; printf("%d,",sizeof(long long)); printf("%ld,",j<<32); printf("%#016x,",j<<32); printf("%#016x,",i<<40); printf("%#01.原创 2020-08-02 13:47:34 · 183 阅读 · 0 评论 -
【C语言】字符串太长换行连接
‘\’ 也叫宏延续运算符字符串太长时换行: char* A = "AAA\ BBB\n"; char* B = "AAA"\ "BBB\n"; printf(A); printf(B);结果:注:C语言规定,连续的用""引起的字符串常量,会默认合并为一个常量字符串printf("Hello ""world\n");与printf("Hello world");相同宏定义换行:#define my_puts(x) printf("%s", \x);和写原创 2020-07-30 18:54:22 · 6076 阅读 · 2 评论 -
【C语言】C语言const*一个有趣的事情,强制类型转换它
int main() { int a = 1; const int* pa = &a; //*pa = 0;Error:表达式是必须修改的左值 *((int*)pa) = 9; printf("%d\n", *pa); return 0;}没错,上面的代码是正确的。原创 2020-07-28 22:46:26 · 828 阅读 · 1 评论 -
c语言typeof关键字(GCC)
c语言typeof关键字(GCC)typeof关键字是C语言中的一个新扩展。typeof的参数可以是两种形式:表达式或类型。下面是使用表达式的的例子:typeof(x[ 0 ](1))这里假设x是一个函数指针数组,这样就可以得到这个函数返回值的类型了。如果将typeof用于表达式,则该表达式不会执行。只会得到该表达式的类型。以下示例声明了int类型的var变量,因为表达式foo()是...原创 2020-01-31 20:19:41 · 910 阅读 · 0 评论 -
ASCII码表
ASCII码表Bin(二进制)Oct(八进制)Dec(十进制)Hex(十六进制)缩写/字符解释0000 00000000x00NUL(null)空字符0000 00010110x01SOH(start of headline)标题开始0000 00100220x02STX (start of text)正文开始0000 0011033...原创 2020-01-26 11:05:10 · 235 阅读 · 0 评论 -
C99 可变数组LVA
C90及C++的数组对象定义是静态联编的,在编译期就必须给定对象的完整信息。但在程序设计过程中,我们常常遇到需要根据上下文环境来定义数组的情况,在运行期才能确知数组的长度。对于这种情况,C90及C++没有什么很好的办法去解决(STL的方法除外),只能在堆中创建一个内存映像与需求数组一样的替代品,这种替代品不具有数组类型,这是一个遗憾。C99的可变长数组为这个问题提供了一个部分解决方案。可变长数组...原创 2019-11-25 18:50:43 · 340 阅读 · 0 评论 -
scanf用法总结
转载自:http://blog.csdn.net/21aspnet/article/details/174326函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]);scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内...转载 2018-09-15 18:56:41 · 1681 阅读 · 0 评论 -
C语言中,数字后面带个U,L,F的含义
U表示该常数用无符号整型方式存储,相当于unsigned intL表示该常数用长整型方式存储,相当于longF表示该常数用浮点方式存储,相当于float一、用于说明数据类型数值后面加“L”和“l”(小写的l)的意义是该数值是long型。 详细说如下: 5L的数据类型为long int。 5.12L的数据类型为long double。 数值后面加“U”...原创 2018-09-17 12:52:45 · 56432 阅读 · 2 评论 -
enum类型的本质(转)
原地址:http://www.cppblog.com/chemz/archive/2007/06/05/25578.html 至从C语言开始enum类型就被作为用户自定义分类有限集合常量的方法被引入到了语言当中,而且一度成为C++中定义编译期常量的唯一方法(后来在类中引入了静态整型常量)。 根据上面对enum类型的描述,到底enum所定义出...转载 2018-09-17 14:55:13 · 802 阅读 · 0 评论 -
有关字符数组初始化的问题
无论是定义数组还是字符数组,是要对其中的元素进行初始化,那么剩余未被初始化的部分就全部变为0(value),是不是总会在这不算,末尾添加一个\0。如果我们通过诸如a[i]=x,的方式对数组(或字符数组)中的元素赋值,剩余未被初始化的部分就全部不会变为0。 实验代码如下: //测试代码一 int ch[100]; ch[1] = 'p'; for (int ...原创 2018-09-15 14:43:20 · 584 阅读 · 0 评论 -
scanf("%c",&ch[i]);
scanf("%c",&ch[i]);会把空格回车制表符读走。并且他是直到读走换行符\n为止。char ch[100] ; for (int i = 0; i < 100; i++) { scanf("%c",&ch[i]); printf("%d ",ch[i]); } ...原创 2018-09-15 15:14:28 · 1096 阅读 · 0 评论 -
Gets和scanf的区别
转载自:Gets和scanf的区别char s[20]; gets(s); puts(s);gets与scanf输入字符串的方式也非常类似,但是有几个区别:(1) gets的输入分割符只有回车,因此gets是能够读入空格的。如果输入为"hello world"时,上面程序的运行结果是"hello world"。而如果用scanf则只能输出hello(2) 此外,scanf和g...原创 2018-09-15 15:26:42 · 39129 阅读 · 7 评论 -
128bit 整数运算的实现
对于128bit的长整型运算,GCC提供了两个扩展类型:__int128_t和__uint128_t,同时支持使用原生运算符对128bit长整型变量进行运算。然而这些类型的定义不在C/C++语言的标准之中,并且对于不同种类的编译器,它的实现情况不同。因此,在编写可移植的程序时,我们有必要实现针对int128的兼容层。以下给出一种比较高效的C语言实现,该代码出自QEMU-2.8源码树。在编译程序...转载 2019-06-08 23:29:17 · 4945 阅读 · 1 评论 -
如何实现快速位翻转总结(各种算法+方法+代码)包含雷德算法
如何实现快速位翻转总结(各种算法+方法+代码)包含雷德算法 0 1一、查表法unsigned char ReverseByte(unsigned char value){ static unsigned char code ReverseByteTable[256] = { 0 ,128,64 ,192,32 ,160,96 ,224,16 ,144,80 ,208,48...原创 2019-08-01 16:18:20 · 2371 阅读 · 0 评论