随笔分类 - Linux C
摘要:在学习sizeof运算符的时候,它的值类型为size_t,结果在使用printf函数显示的时候,凭空多了很多警告,有点不不理解,为啥搞这么复杂?直接用个int类型多省事? 经过一番搜索和阅读文档,找到了答案,总结如下: 问题1:为啥不用int而是size_t这么古怪的类型,搞出好多类型不匹配的警告?
阅读全文
摘要:编译器工作原理:在64位的计算机中,当创建一个指针变量时,计算机会为它分配8个字节的存储空间。但如果创建的是数组呢?计算机会为数组分配存储空间,但不会为数组变量分配任何空间,编译器仅在出现它的地方把它替换成数组的起始地址。 结论1:由于计算机没有为数组变量分配空间,也就不能把它指向其他地方。例题:
阅读全文
摘要:这里使用组安装包,一次性安装所有开发者工具。 1、查看有那些组安装包可用。 yum grouplist | more 2、搜索一下有哪些和development有关。 yum grouplist | grep development 查到以下内容: [root@noi ~]# yum groupli
阅读全文
摘要:minGW是C语言编译包,将GCC编译器在Windows平台上编译软件提供支持。 手工安装minGW是一件很繁琐的事情,但是搞懂它很有用,因为C语言本身是一个很小的语法系统,全靠 各种库在支持,安装minGW其实就是在装配C语言编译器,弄懂了,最起码,每个库文件在哪里,不用 问别人啦。 首先:推荐2
阅读全文
摘要:没想到啊,没想到: printf函数对参数的计算顺序是从右往左的! 我不禁想问一句,这么坑爹的事情,书里居然没有写过。还是我看书不仔细,没有找到?(回头,在自己翻翻那本c语言编程) 于是下面的程序结果: 正确的输出结果: 计算错误的小盆友,可以重新翻书了。 另外:不同编译器,甚至不同版本的GCC输出
阅读全文
摘要:以前光知道如何不清楚某个命令的用法可以打上后缀 ‘ --help' 现在刚发现,原来还有help命令来帮忙,如果你安装的是中文支持,在ubuntu上, 那么部分命令说明还是中文版哦。 举例: help echo help fg
阅读全文
摘要:vim的模式有多种,比如normal(普通模式),insert(插入模式),command(命令行模式),visual(可视化模式)。相同的命令和快捷键在不同的模式下功能是不一样的,因此帮助信息也是分模式的。 举个栗子: 我想看看set backspace时,backsapce的可用值有那些? 如果
阅读全文
摘要:一、安装预备软件。#vim要带python2.7的支持,curl是下载插件必须用到的软件,还有git apt install vim-nox-py2 curl git #安装python头文件 apt install python-dev python3-dev #安装c/c++编译包 apt in
阅读全文
摘要:需求:Ubuntu下用Vim时,ESC因为在左上角,还算是好按,但是Ctrl就太坑了,在左右两个下角,实在是太不方便了。 经过分析决定将:CapsLock键改为Ctrl,但仍然保留下面的原Ctrl键(使用Ctrl+Space来切换输入法,已经习惯了,不想换)。 简单的说,就是用Ctrl替换CapsL
阅读全文
摘要:C语言的运算符众多,具有不同的优先级和结合性,我们将它们全部列了出来,方便大家对比和记忆: 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 (表达式)/函数名(形参表) . 成员选择(对象) 对象.成员名 -> 成员选择(指针)
阅读全文
摘要:ubuntu仓库里面关于源码部分配置的好全啊,什么都有,ps:包括vim的各种插件居然也有人打包放到仓库里,真是方便。 1.首先查看一下本系统使用的内核版本号: cat /proc/version Linux version 4.4.0-66-generic (buildd@lgw01-28) (g
阅读全文
摘要:1. lint可以对c程序进行更加广泛的错误分析,lint不是缩写,它的命名是因为它像在程序中“吹毛求疵”,现在许多linux发行版都包括了它的增强版splint(Secure Programming Lint),这一工具可以在网站www.splint.org免费下载,或https://github
阅读全文
摘要:linux下开发C代码需要安装的manpages: $ sudo apt-get install manpages$ sudo apt-get install manpages-dev$ sudo apt-get install manpages-posix$ sudo apt-get instal
阅读全文
摘要:GCC提供了一份c++的man文档,地址:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/ 下载最新版的文档,比如:libstdc++-api.20140403.man.tar.bz2 解压后放到:/usr/share/man/man3 使用方法: 为了避免与
阅读全文
摘要:If you have code like this: char s[10]; gets( s ); and you type in more than 10 characters when the program is run, you will overflow the buffer, caus
阅读全文
摘要:常量指针定义:常量是形容词,指针是名词,以指针为中心的一个偏正结构短语。这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针。指针指向的对象是常量,那么这个对象不能被更改。常量指针的使用要注意,指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改,也就是说常量指
阅读全文
摘要:ubuntu下研究arduino时发现,原来可以不用arduino IDE开发,linux下还有gcc-avr直接开发avr系列的控制器。 于是,迫不及待的查看了下相关资料,总结一下安装gcc-avr的步骤。 PS:感叹一下,现在ubuntu做得实在是太好用了,以前很费心的事情,现在都很简单了。 1
阅读全文
摘要:UNIX环境高级编程(第三版)中的例子用到apue.h这个头文件,但是书里面写的地址已经不能访问。 经过一番查找之后,找到如下解决方案: 1、到www.apuebook.com上下载第2版的源码,也可以直接点这里。 2、下载后的源码,需要修改一下: 1、Make.defines.linux中第6行W
阅读全文
摘要:原因:C中,某一个重要的头文件可能被多个文件包含,如果编译的多个文件均包含了同一个头文件, 就可能存在,一个头文件被多次包含的问题。 用法:这个问题,一般用#ifndef来解决。 1、定义一个与文件名相同的标识符来标识该头文件,点号用下划线替换,例如:myhead_h_, 因为前下划线被系统库占用了
阅读全文
摘要:使用#define来定义一些宏,进行一些简洁的替换甚至一些带参数的宏,在linux c代码中很常见,说明它很好、很有用, 但是它也有一些复杂的规矩和陷阱需要注意,下面我记录一些,仅供参考。 1、当使用"\"来换行时,第二行要顶格写,否则会多出一个空格。例如: #define OW "what are
阅读全文