C语言自定义数据类型 共用体关键字:union有时候想用同一段内存单元存放不同类型的变量。如:把一个整型变量、浮点型变量和字符型变量放在同一个内存单元中,它们在内存中所占字节数不同,但是共用同一段内存地址,也就是共用体了。也就是所有数据成员共用同一段内存的数据类型称为共用体,也称其为联合体。共用体和结构体的声明、定义和成员变量引用的语法是类似的,只不过关键字不一样,以及所占内存大小有区别而已。
预处理以及定义 ifndef....#else.....#endif //判断的是#ifndef后面的宏是否定义了。#ifdef....#else.....#endif //判断的是#ifdef后面的宏是否定义了。#include "文件名" //包含自定义头文件用"",在自定义头文件中找不到就会在系统头文件中去找。#if....#else....#endif //判断的是#if后面的条件真假。//在头文件中一般只声明函数,相当于一个功能。
如何编译运行C程序 注意:在运行可执行文件之前,需要保证已经正确地编写了C程序代码,并且没有错误。如果编译过程出现错误,需要先修改错误,并重新编译。命令:gcc -o [可执行文件名称] [C程序文件名称]列如:gcc -o hello hello.c。1. 打开终端,进入C程序所在的目录。2. 编译C程序文件,生成可执行文件。3. 运行生成的可执行文件。命令:./[可执行文件名称]例如:./hello。
C语言程序编译步骤 链接器会将多个目标文件合并成一个可执行文件,它会将所有的函数和数据段放到一个地址空间中,并解析函数之间的调用关系,使得程序可以正确地执行。预处理指令会被替换成对应的文本或代码,例如,#include指令会将指定的文件包含到当前文件中,#define指令会用宏定义的文本替换程序中出现的标识符。编译器的输出通常是汇编代码,这些代码是CPU可以直接执行的指令,但是这些指令通常是以十六进制数的形式表示的,不易读懂。预处理后的代码通常会比源代码大很多,因为预处理器会把包含的文件展开,宏展开,注释删除等操作。
Linux下搭建sftp服务器 vsftpd是文件传输服务,sshd是远程连接linux的服务。windows系统下:我用的远程工具是xshell,文件传输工具是winscp如果用的是ubuntu桌面:用putty(远程连接shell用) 和 filezilla(文件上传下载用)...
linux (debian) 设置开机自启动 在网上查看,linux有多种设置开机自启动的方法,这里有两种,但第二种一直测试不成功,希望大家可以提出一些建议,非常感谢!方法一:直接在/ect/rc.local 中 exit 0 之前添加,重启即可,最简单的方法方法二:在/etc/init.d/ 下新建启动脚本,在 /etc/rc2.d/ 下用软链接,链接此脚本即可。1. /etc下rc?.d 目录简介/etc 下有 rc0.d -- rc6.d分别代表不同的级别:0:关闭计算机1:单用户模式2:无网络多用...
Ubuntu官方Wiki教程资源 Ubuntu官方Wiki教程资源前言:通常学习一样新知识时,最快的方式是通过搜索引擎然后以最快的方式拿枪上战场,如果接下来还一直依赖搜索引擎去打,那么你会发现自己永远都在打游击;那么如果要解决这个问题,必须要学会系统的学习,只有连贯的学习方法才能把一个新知识学透。而系统学习最有效的方式就是看书,书本的知识点是连贯的,所以这个方式最有效。同样,如果要学习Ubuntu时,一开始学习最基本的操作技巧...
DKMS是什么? 我们都知道,如果要使用没有集成到内核之中的Linux驱动程序需要手动编译。当然,这并不是一件什么难事,即使是对于没有编程经验的Linux使用者,只要稍微有点hacker的意识,努力看看代码包里的Readme或者INSTALL文件,按部就班的执行几条命令还是很容易办到的。但这里还有一个问题,Linux模块和内核是有依赖关系的,如果遇到因为发行版更新造成的内核版本的变动,之前编译的模块是无法继续使用的...
Linux中检查设备是否已经正常安装 linux系统中的设备驱动是否安装好一般检查几个方面:1、系统日志。嵌入式系统多是直接dmesg一下,看有没有设备关键字相关的出错信息(通用系统可检查/var/log/messages文件)。2、已加载的模块。检查模块加载列表中有没有相关设备的模块。lsmod3、设备列表。检查已加载的设备中有没有相关设备cat /proc/devices4、设备入口。如果以上检查都正常,还需要检查设备...
终于知道为什么apt remove nginx后重装没有声称nginx的配置文件了 今天在Ubuntu服务器上安装supervisor,部署没成功想卸载重来,sudo apt-get remove supervisor 后发现配置文件还在,便手动删除了配置文件。再次安装,提示配置文件不存在,WTF!配置文件不该你软件给我创建吗?我想。查阅资料才知,还有 apt-get purge 这一选项,purge 清除。划重点:apt-get remove 会删除软件包而保留软件的...
Linux文件系统类型介绍 Linux 把设备都当作文件一样来进行操作,这样就大大方便了用户的使用(在后面的Linux 编程中可以更为明显地看出)。在 Linux 下与设备相关的文件一般都在/dev 目录下,它包括两种,一种是块设备文件,另一种是字符设备文件。这就涉及到文件系统,以下介绍以下Linux文件系统。 1.ext2 和 ext3 ext3 是现在 Linux(包括 Red Hat,Mandrake 下...
Linux操作系统查看系统软硬件内核等版本的命令 查看操作系统版本一般有三种方式:1、lsb_release -a,适用于所有Linux发行版2、cat /etc/redhat-release,适用于Redhat3、cat /etc/issue,适用于所有Linux发行版查看系统内核版本一般有两种方式:1、cat /proc/version2、uname -a注意: uname -r 和 uame -v 的区别:...
CPU架构比较 cpu架构只有cisc和risc区别,而且现在早变天了,x86内核是个risc,但指令集还是cisc的,而纯risc的cpu早没落了,现在没多少了。大概来说一个复杂指令集,一个精简指令集,设计方向有所区别,但现代cpu早就混合了两种设计思路。(一) RISC家族的mips和arm一、概述这里首先介绍的是RISC(精简指令集处理器)家族的两大佼佼者MIPS 和 arm ,相对应的是CI...
Centos7的网络配置 (一) centos7的网络配置管理较以前有以下2点不同:(1) centos7的网卡命名规则发生了改变,不再是原来那种eth0 eth1 eth2这种名称,而改成enoxxxxxx的格式,en代表的是enthernet以太网,o代表onboard内置,这种新的方式不但长,而且难记,不过优点也比较突出,有编号唯一性,迁移系统的时候不容易出错,网卡名称可以改动。但是有时候再做配置的时候,希...
centos7开机界面出现多个选项 centos7开机界面出现多个选项第一个选项正常启动,第二个选项急救模式启动(系统出项问题不能正常启动时使用并修复系统)在CentOS更新后,并不会自动删除旧内核。所以在启动选项中会有多个内核选项,可以手动使用以下命令删除多余的内核:1.查看系统当前内核版本:# uname -aLinux localhost.localdomain 3.10.0-229.20.1.el7.x86_6...
Jar包和War包的区别 做Java开发,jar包和war包接触的挺多的,有必要对它们做一个深入的了解,特总结整理如下:1.jar包的介绍JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。JavaSE程序可以打包成Jar包(J其实可以理解为Java了)。JAR 文件格式以流行的 ZIP 文件格式为基础。与 ZIP 文件不同的是,JAR 文件不仅用于...
Linux(日志管理)7/7 (一)日志管理基础rsyslog 日志管理logrotate 日志轮转(二) 处理日志的进程rsyslogd: 处理绝大部分系统相关的日志记录(比如: 和系统操作有关的安全,认证ssh,su,计划任务at/cron......)hrttpd/nginx/mysql: 这些第三方的进程大多可以以自己的方式记录日志,不需要rsyslogd(三)常见的日志文件(系统、...
Linux(计划任务)6/7 计划任务 at 和 cron 的区别:(一)、 一次性调度执行 at需要确保进行开启才能执行例1(^D结束at编程): 1分钟以后添加uuuu这个用户,用atq命令查询是否还有at计划任务例2:编辑一个任务文件,用at来调度这个文件(二) 循环调度任务croncrond是每分钟都会检查一次任务列表,他的频率是分钟粒度的。crond分为用户级别和系统级别的...