C语言
文章平均质量分 66
lengye7
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
gcc或clang更改函数入口点
gcc和clang编译器都是支持的自定义入口点的,用户可以通过-e选项来指定自定义的入口点。或就可以编译成功:但是,如果执行test程序,就会出现段错误,这是因为我们没有初始化标准输入输出,而printf函数需要使用标准输入和输出,因为访问了不存在的资源,所以就导致了段错误。根据参考一中的内容可知,gcc默认的入口点_start函数在调用main函数之前,会先做一系列的初始化工作,以确保main函数所需的资源准备好。原创 2023-05-02 01:32:55 · 2002 阅读 · 1 评论 -
不同平台的C/C++标准库
程序员们在特定的操作系统上(MAC、Windows、Linux等),利用特定的IDE(Xcode、Clion、Visual Studio等)或者文本编辑器(VSCode、Sublime等)完成C/C++源代码的编写,然后利用特定的编译器对源代码进行编译,链接对应的标准库,生成可执行程序,完成特定的软件功能。标准库新增的功能,标准库一般是我们学习编程的起点,无论是std::cout()或者printf()函数都是标准库中的函数,标准库为我们提供了丰富的操作系统底层系统软、硬件系统相关的函数接口。转载 2023-01-26 20:35:15 · 65458 阅读 · 0 评论 -
MinGW详细介绍
MinGW官网MinGW,是MinimalistGNUfor Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时(C Runti...转载 2019-07-03 12:18:34 · 8624 阅读 · 0 评论 -
libc、glibc和glib的关系
转自:http://my.oschina.net/moooofly/blog/126260http://nieyong.github.io/wiki_ny/glibc,%20eglibc%E5%92%8C%20glib%E7%9A%84%E5%8C%BA%E5%88%AB.html【glibc 和 libc】glibc 和 libc 都是 Linux 下的 C 函数库。l...转载 2019-07-01 20:15:05 · 4700 阅读 · 0 评论 -
C语言的主要运算符及其优先级
运算符优先级自上而下,依次降低()括号运算 []数组下标 ->结构体成员指针 .点运算符 这几个运算符同时出现,从左至右依次计算!逻辑反 ~按位取反 ++自增 --自减 -负号 (type)类型强制转换 &取地址 *解地址 sizeof运算符 从右向左依次计算* / % + - 四则取余运算 ...原创 2019-07-08 18:13:02 · 643 阅读 · 0 评论 -
linux与windows交叉编译
1.简述这篇文章主要说明的是将linux上编译的程序放到windows上运行。2.操作方法2.1 下载必备的交叉编译软件首先,我的主机与虚拟机都是64位的,虚拟机为ubuntu。$ sudo apt-get install mingw-w642.2 编写程序编写一个简单的测试程序:#include <stdio.h>int main(int argc,cha...转载 2019-07-02 20:54:57 · 4299 阅读 · 0 评论 -
libcurl 探索之旅:libcurl 分别在 Unix 环境和 Windows 环境下的编译与使用
一、引言因为工作的原因,加上自己的一点点兴趣爱好,今天花了一整天的时间去探索和学习 libcurl。libcurl 的文档是非常齐全的,并且在获取到了源代码之后,里面的代码、文档、工具等等都是非常完善的。可是对于新人来说,想要从这么复杂多样的文档中摸索出来适合自己入门的方向,实在是有些困难。这篇博客,就是想要给同样深陷于 libcurl 复杂的文档中不能自拔的程序员同僚们一条我自己走出来的...转载 2019-07-02 17:47:53 · 594 阅读 · 0 评论 -
MinGW到底是个什么ghost
MinGW到底是个什么ghost0.什么是MinGWMinGW,即 Minimalist GNU For Windows。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC(GNU Compiler C)产生 Windows32 程序。实际上 MinGW 并不是一个 C/C++ 编译器,而是一套 GNU 工具集合。除开 GCC (GNU 编译器集合...转载 2019-07-02 17:40:43 · 859 阅读 · 0 评论 -
C语言的类型
C语言主要有以下几种类型:1、整型2、浮点型3、字符类型(包括了字符串)4、函数类型5、派生类型6、复合类型对于整型来说主要分为无符号整型和有符号整型,默认声明有符号整型。首先介绍无符号整型:unsigned char:1字节unsigned shrot:通常是2字节unsinged int:通常是4字节unsinged long:通常是8字节...原创 2019-07-07 23:18:23 · 9933 阅读 · 0 评论 -
MSYS2 环境搭建,并整合Qt
本机环境:Windows XP 32位MSYS2地址:http://sourceforge.net/projects/msys2/下载32位版本,地址:http://sourceforge.net/projects/msys2/files/Base/i686/当前压缩包名称:msys2-base-i686-20131208.tar.xz安装完之后,运行目录下的mingw32_shell.b...转载 2019-07-02 03:54:05 · 1453 阅读 · 0 评论 -
用GPG保卫你的重要文件-GnuPG/Gpg4win使用说明
GnuPG官网:https://www.gnupg.org/Gpg4win官网:https://www.gpg4win.org/GnuPG教程:官方中文帮助:https://www.gnupg.org/howtos/zh/GPGMiniHowto-1.html月光博客写的教程:使用GnuPG(PGP)加密信息及数字签名教程阮一峰的网络日志:GPG入门教程 - 阮一峰的网络...转载 2019-07-02 02:23:43 · 1012 阅读 · 0 评论 -
glib 简介
glib 简介编译 编译 简介glib 可调试/configure CFLAGS=-g && make && make installormake CFLAGS=-g 简介原文地址:http://laiyuanyuan7.blog.163.com/blog/static/1527432120112104428...转载 2019-07-01 21:05:30 · 2827 阅读 · 0 评论 -
MinGW MinGW-w64 TDM-GCC等工具链之间的区别与联系
不当之处,尽请指正。相同点:一、 他们都是用于编译生成Windows应用程序的工具链。二、 他们都是基于gcc的。不同之处(只说大的):一、项目之间的关系1. MinGW应该是最先诞生的。2. MinGW-w64项目最初是做为MinGW的一个分支而诞生,但现在已经独立发展。详细信息参见:http://sourceforge.net/apps/trac/mingw-w...转载 2019-07-03 12:48:01 · 1424 阅读 · 0 评论 -
Mingw、Mingw-w64、msys、msys2、Cygwin等总结
Mingw包含一个c运行库,以及windows的头文件,同时包含了一些编译器工具链,能够将编译windows程序生成windows的32位可执行文件。Mingw-w64是从Mingw衍生而来,能够生成32和64位的windows可执行文件。msys是上面两个的一个集成环境,工具链更加完善。msys2与msys不同,msys集成了Mingw和Cygwin这两个,同时包含一个包管理工具,包...原创 2019-07-03 21:43:45 · 7648 阅读 · 0 评论 -
Cygwin库从GPL改为LGPL许可证
Red Hat的Cygwin Team宣布,Cygwin库的下一个版本 2.5.2版将采用LGPL v3许可证。Cygwin库是Cygwin项目的核心组件,目标使Linux下程序更容易运行在Windows平台上。之前Cygwin库使用的是GPL开源许可,改变为更宽松的LGPL后,会带来更多的商业机会。Cygwin 包含成千上百个开源包,包括大多数GNU工具包,X server等。...转载 2019-07-04 12:41:05 · 391 阅读 · 0 评论 -
C预处理器简介
Cpreprocesser,简称cpp,是C编译器在编译源码之前用于转换代码的宏处理器。之所以称之为宏处理器,是因为通过cpp,你可以在程序中定义和使用宏。cpp是一种文本处理工具,因此也可以用于C、C++和Objective-C之外的源码。初始处理cpp的作用是对输入的文件做一系列的文本处理,这些文字处理是最先进行的。理论上,预处理中的各个操作的执行是有严格的顺序,但实际上GNU的CPP...转载 2019-07-10 00:34:37 · 1490 阅读 · 0 评论 -
AOT和JIT
一个程序的编译过程可以是步骤迭代式的,即每一轮步骤结束后得到的结果都可独立运行,比如,先构造AST再输出字节码,中间状态AST也是可以解释执行的。由于编译的本质就是代码转换,因此对一个语言可以有多个独立的编译器,每个负责一轮步骤AOT Compiler和JIT Compiler就是针对编译形式做的分类:AOT:Ahead Of Time,指在运行前编译,比如普通的静态编译JIT:Ju...转载 2019-07-10 10:01:32 · 1209 阅读 · 0 评论 -
C语言文档中的no linkage理解
no linkage:对于在两个不同地方声明的同名标识符,他们不是指向同一实体,而是指向各自的实体。那么哪些标识符是no linkage的呢?除了变量和函数之外的其他任何标识符和处于块作用域内的同名变量但是没有使用extern修饰的变量。这些标识符都始终指向独自唯一的那个实体。...原创 2019-07-05 01:01:23 · 4190 阅读 · 0 评论 -
C语言中的incomplete type
不完整类型是一种用于描述标识符而无法确认该描述符大小的类型。如一个类只有声明没有定义,一个数组没有指定大小等。还有一种情况就是类有定义,但是所在头文件没有被包含文件A中,仅仅在A中声明了,也属于不完整类型。在编码过程中可以利用“无法确认该描述符大小”的特点来保证代码安全,如typedef char T_must_be_comlete_type[(0 == sizeof(T) ?...转载 2019-07-06 11:21:19 · 9630 阅读 · 0 评论 -
C 语言的注释
C语言有两种注释第一种:/* 这是一个经典注释,C89标准引入*/第二种://这是一个单行注释,C99标准引入关于第一种注释的主要注意点:第一种注释不能嵌套就近匹配原则:/* 这是一个多行的著述 /*嵌套注释*/*/上面这个注释会报错,因为C语言的经典注释符号遵循就近匹配原则,第一行/*会和第二行的*/进行匹配,形成一个完整的经典注...原创 2019-07-07 12:00:09 · 8922 阅读 · 0 评论 -
libcurl库的http部分介绍
LibCurl HTTP部分详细介绍目录索引:一、LibCurl基本编程框架二、一些基本的函数三、curl_easy_setopt函数部分选项介绍四、curl_easy_perform 函数说明(error 状态码)五、libcurl使用的HTTP消息头六、获取http应答头信息七、多线程问题八、什么时候libcurl无法正常工作九、关于密码十、HTTP验证十一、代码示例 ...转载 2018-06-23 12:15:31 · 1917 阅读 · 0 评论 -
C语言指针越界与野指针
野指针1,指针变量未初始化2,指针变量直接释放,没有置NULL3,指针变量超越了其指向变量的作用范围,这种情况下,其所指向的变量已经不存在,而我们认为对指针进行操作依然指向该变量,这种情况危害最大。如果对野指针进行了操作,那么很有可能造成不可预计的后果,因为你不知道野指针指向的内存区域的具体情况。野指针不做过多的介绍,要通过养成良好的编程习惯,尽量避免野指针的存在。原创 2016-11-23 12:57:10 · 16162 阅读 · 0 评论 -
数的类型
整数通常整数在计算机中用一个机器字长来存储,不同的实现使用不同的存储方式,C语言最常见的一些方式是使用以下方式short通常为16位,int类型通常是16位或者32位,long类型通常占用32位,long long通常占用64位,这些整数的表示方式通常根据不同的计算机的机器字长有关系,在不同机器上实现可能不同,现在编译器一般都会自行判断使用何种整数类型,这些类型通常默认是有符号类型。%d输原创 2016-12-26 15:26:25 · 704 阅读 · 0 评论 -
整数上溢和下溢与浮点上溢和下溢
整数的上溢#include#includeint main(){int zhengshu1,zhengshu2;//int 类型在32位机器中通常为32位unsigned int zhengshu3;zhengshu1=2147483647;zhengshu2=-2147483647;zhengshu3=4294967295;//fudianshu1=0.1原创 2017-01-27 18:18:23 · 9428 阅读 · 0 评论 -
C语言中一些常用IO函数的总结
scanf()函数格式化读入函数,采用转换说明匹配scanf()通过%的形式对数据进行读入,可以一次读入多个数据。scanf的实现依靠指针所以有如下两条规则:1、scanf()读入基本数据类型时,需要在变量名前加&。2、scanf()读入字符串数组时,不需要加。如scanf("%d",&a),一次读入一个整型数据,scanf("%d%d",&a,&b),一次读入两个数据,在输入两个转载 2017-03-08 14:14:55 · 2517 阅读 · 0 评论 -
常用的makefile模版
如果需要学习makefile文档,可以搜索《跟我一起写makefile》,作者陈皓。#########################################用于编译C程序##生成可执行文件################################################################################给符合模式原创 2017-04-28 09:49:40 · 476 阅读 · 0 评论 -
C编译时各个阶段都在做什么
C语言编译主要分为四个阶段1.预处理 此阶段主要完成#符号后面的各项内容到源文件的替换,往往一些莫名其妙的错误都是出现在头文件中的,要在工程中注意积累一些错误知识。 (1)、#ifdef等内容,完成条件编译内容的替换 (2)、#include中内容,在当前目录或者指定目录,或者默认目录搜索头文件,并将头文件拷贝到源文件中。 (3)、#define的内容,替换de原创 2017-04-30 16:17:07 · 3782 阅读 · 1 评论 -
size_t类型
之所以把size_t要拿出来整理,是因为size_t用的比较多,而且很多标准库函数也用的比较多。其在设计之初,就是为了完成一下功能。size_t 类型定义在cstddef头文件中,该文件是C标准库的头文件stddef.h的C++版。它是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小。没错,其大小是为了保证能够容纳内存中对象大小。实际的机器平台和操作系统平台,一原创 2017-05-24 08:34:29 · 608 阅读 · 0 评论 -
C语言的移位运算符
逻辑移位:1.逻辑左移:高位丢弃,低位补0。对应的X86汇编指令:SAL(有符号数),SHL(无符号数)2.逻辑右移:高位补0,低位丢弃。对应X86汇编指令:SHR也就是说逻辑移位,移入的位都要补0。可见对于逻辑移位不考虑符号位。算术移位:1.算术左移:高位丢弃,低位补0。对应X86会变指令:SAL(有符号数),SHL(无符号数)2.算术右移:高位补符号位,低位丢弃。对应X原创 2017-04-27 09:45:01 · 2709 阅读 · 0 评论 -
在项目中,多次声明函数的好处
有些时候,一些函数已经包含在头文件中,但是我曾经看到一份源代码,依然在开头采用extern的方式,再次声明了一些实际使用到的函数,这种方式的好处是什么?仔细想了想,第一、可以防止某些头文件中漏掉包含一些函数的声明第二、这种方式使源代码更加清晰,特别是在庞大的工程中,更加有利于源代码的阅读。第三、有利于组内不同人之间,实时的调整接口,等待模块写好之后,再将需要开放的接口一并写原创 2017-07-04 08:49:00 · 1766 阅读 · 0 评论 -
CPU之分支跳转优化
CPU从某个版本开始加入了分支跳转预测,所以,在书写分支跳转代码时,应该尽可能的使跳转在同一方向连续发生,以提高代码的执行效率。原创 2017-11-22 12:41:59 · 996 阅读 · 0 评论 -
c语言各个版本的简单介绍
ANSI C与C89、C99、C11区别差异不同版本标准差异总结(图片来源:http://www.crifan.com/summary_c_language_version_c89_amd1_c99_c11):以下为转载:【K&R C】 1978 年,Dennis Ritchie 和 Brian Kernighan 合作推出了《The C Programming Language》的第一版...转载 2018-05-09 16:38:39 · 18759 阅读 · 0 评论 -
c99相对于c89的区别,新增的内容以及废除的内容
由于c99相对于c89有一些废除内容,所以c99并不兼容c89.以下为c99相对于c89的改动。 1、增加restrict指针 C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元,或者指向由malloc()函数所分配的内存变量。restrict数据类型不改变程序的...转载 2018-05-09 16:43:37 · 991 阅读 · 0 评论 -
记录一个c语言的古老语法,在阅读源码的时候,遇到strgetmsg(fd, ctlp, datap, flagsp, caller) int fd; struct strbuf *ctlp, *dat
strgetmsg(fd, ctlp, datap, flagsp, caller)int fd;struct strbuf *ctlp, *datap;int *flagsp;char *caller;在阅读iftop源码的时候,遇到这种写法,查阅文档得知,这是一种古老的写法,K&R风格,写法太过古老,可能是由于iftop是一款古老的软件,所以不建议再使用,但是记录在这里,防止以后再次遇...原创 2018-05-07 10:37:34 · 482 阅读 · 0 评论 -
关于c99标准6.2.2中的第四点的理解
For an identifier declared with the storage-class specifier extern in a scope in which a prior declaration of that identifier is visible,23) if the prior declaration specifies internal orexternal link...原创 2018-05-08 00:34:54 · 428 阅读 · 0 评论 -
Libcurl的一些基本介绍
本文转载自 C++ 用libcurl库进行http通讯网络编程 作者:绿色冰点目录一、LibCurl基本编程框架二、一些基本的函数三、curl_easy_setopt函数部分选项介绍四、curl_easy_perform 函数说明(error 状态码)五、libcurl使用的HTTP消息头六、获取http应答头信息七、多线程问题八、什么时候libcurl无法正常工作九、关于密码十、HTTP验证...转载 2018-06-23 13:21:39 · 1051 阅读 · 0 评论 -
c语言标准文档阅读
C语言中的若干术语理解和记录 Access(执行的时候的一个action)用于读取和修改object Argument实参,函数或者宏函数调用的使用,所传入的实际参数。 BehaviorAppearance和action Implementation-defined behavior这是由具体的实现(编译器)自己决定的一些行为,标准并不做出规定。...原创 2018-09-10 22:34:39 · 2244 阅读 · 0 评论 -
c预言中的trigraph,及三字母字符
C语言中鲜为人知的“三字母词” (trigraph sequences)2010年12月17日 14:57:00 daheiantian 阅读数:6639 标签: 语言c编译器standardsdeletepointers 更多个人分类: CTechnorati 标签: C语言,三字母词,trigraph sequences,三联符序列,C99,ANSI C 在AN...转载 2018-09-13 14:11:54 · 658 阅读 · 0 评论 -
源文件字符集,编译器内部字符集,执行字符集,控制台乱码问题,Qt中文问题
转载自:https://blog.csdn.net/a10929/article/details/78235793源文件字符集:源文件本身也是文本文件,所以源文件字符集是指源文件保存时采用哪种字符集编码。VC++下源文件默认是gbk编码,如果想要更改,可以通过 文件-高级保存选项 修改某个源文件的编码方式,似乎没有什么选项能够设置创建项目时的源文件编码,需要自己一个一个设。 编译器字符集:编...转载 2018-09-14 14:56:41 · 1144 阅读 · 0 评论 -
转载:GCC源码分析(二)——前端
从这一篇开始,我们将从源代码的角度来分析GCC如何完成对C语言源文件的处理。GCC的内部构架在GCC Internals(搜“gccint.pdf”,或者见[1])里已经讲述得很详细了,但是如果你只看了gccint就来看代码,还是觉得一头雾水,无法下手,因为你很难把gccint所讲的概念同gcc代码里真实的数据结构联系起来。那么这也是我把我这半年的分析经理写下来的原因,大家可以参照gccint来...转载 2018-09-15 12:30:55 · 700 阅读 · 0 评论
分享