编译程序

1.1 C语言概念

会有一股神秘感。 提交于 2020-03-30 20:46:40
1.1 基本概念 源文件: 源文件即是源代码文件,C语言源文件后缀名是.c。 头文件: 头文件后缀名为. h(head,头),c语言代码由头文件和源文件组成。 关键字: 关键字是c语言征用的一些英文字母或者单词,这些字在c语言中代表着特殊含义,已经被c语言定义好了,轮不到我们再次随意定义使用了。 注释: c语言中注释以 // 开头,或者 / / ,注释是给程序员看的,不是给机器看的。也就是说,程序员写注释给其他人看,让人明白自己为什么要这么写。但是编译器编译程序的时候是忽略注释内容的。(一个代码品格良好的程序员,注释是写的明明白白的) 变量:会变化的量,c语言中程序是用变量来进行计算的。 函数:函数是c语言的一个基本组成单位,一个c语言程序其实是由很多个函数组成的。函数可以调用其他函数来完成运算。 1.2 C语言开发的一般步骤 第一步 编辑源代码(使用vi或者其他编辑器) 第二步 编译。编译就是编译器把源程序转化成可执行的过程,编译要用到编译器。我们在linux中使用编译器一般是gcc。 譬如:gcc hello.c 把当前目录下hello.c文件编译,得到的可执行文件名字a.out,也可以自己指定编译后生成的可执行程序的名字,使用gcc hello.c -o hello 第三步 执行编译。执行编译生成的可执行程序,执行方式是 ./hello 第四部 调试

1.Java字符串常量String

六月ゝ 毕业季﹏ 提交于 2020-03-30 12:02:15
1.基本概念 1)创建字符串的方式 1.使用""创建字符串 2.使用new关键字创建字符串 总结: (1)单独使用""引号创建的字符串都是常量,编译期就已经确定存储到String Pool中; (2)使用new String("")创建的对象会存储到heap中,是运行期新创建的; new创建字符串时首先查看池中是否有相同值的字符串,如果有,则拷贝一份到堆中,然后返回堆中的地址; 如果池中没有,则在堆中创建一份,然后返回堆中的地址(注意,此时不需要从堆中复制到池中, 否则,将使得堆中的字符串永远是池中的子集,导致浪费池的空间)! (3)使用只包含常量的字符串连接符如"aa" + "aa"创建的也是常量,编译期就能确定,已经确定存储到String Pool中; (4)使用包含变量的字符串连接符如"aa" + s1创建的对象是运行期才创建的,存储在heap中; 2)在执行到双引号包含字符串的语句时,如String a = "123",JVM会先到常量池里查找, 如果有的话返回常量池里的这个实例的引用,否则的话创建一个新实例并置入常量池里。 所以,当我们在使用诸如String str = "abc";的格式定义对象时,总是想当然地认为, 创建了String类的对象str。担心陷阱!对象可能并没有被创建!而可能只是指向一个先前已经创建的对象。只有通过new(

python--For the first time

情到浓时终转凉″ 提交于 2020-03-30 06:59:08
一、 Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum)。 最新的TIOBE排行榜: Python已经进入三甲了啊! Python可以应用于众多领域, 如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。 目前使用Python语言的公司 如:Youtube、Dropbox、BT、Quora、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。 使用Python做的事有: 自动化运维、自动化测试、大数据分析、爬虫、Web 等。 Python主要应用领域 :    云计算: 云计算最火的语言, 典型应用OpenStack    WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣等, 典型WEB框架有Django。    科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas。    系统运维: python脚本等。    金融: 量化交易,金融分析,在金融工程领域等。    图形GUI : PyQT, WxPython,TkInter Python在一些公司的应用: CIA: 美国中情局网站就是用Python开发的。 NASA: 美国航天局

Linux系统C语言开发环境学习

强颜欢笑 提交于 2020-03-30 03:13:05
项目 内容 这个作业属于哪个课程 课程链接 这个作业的要求在哪里 作业要求 学号-姓名 17043229-钟亮 作业学习目标 了解Linux系统C语言编程环境 ,学习Linux环境C语言开发步骤 1.安装C语言开发环境 gcc -v ##查看gcc版本信息 sudo yum groupinstall "Development Tools" ##安装gcc make -v ##查看make版本信息 2.简单C语言练习 (1)通过man命令查看帮助文档 man gcc ##查看gcc帮助 (2)命令行模式简单C语言编译链接等操作 通过vim编辑器编写一个简单的C语言程序,如写一个输出自己学号的程序。 我们输入完了源程序,接下来我们进行C语言程序编译的四个阶段,预编译,编译,汇编,链接 a) 预编译 b)编译 c)汇编 这里生成的不是文本文件了,是二进制文件,我们可以通过objdump命令来反汇编该文件来分析文件内容 d)链接 可执行文件是二进制文件,同样需要用objdump命令来反汇编该文件分析文件内容 objdump -d test e)运行 (3) 多文件编译 我们在exp4文件夹下面再建一个文件夹mfc(multi-fifiles compile) 在该文件夹下面创建5个文件,文件名分别如下: 每个文件的内容分别如下: 完成上面的代码输入,接下来我们进行编译,对于多文件编译

ESP8266-12F学习之点亮一个LED灯

那年仲夏 提交于 2020-03-30 01:53:41
点亮一个LED灯 上一篇文章,我们介绍了怎么在Windows系统下搭建一个SEP8266的开发环境,那在这一篇文章中我们要开始来编写一个硬件入门经典小程序,如何点亮一个LED小灯,同时在这一章中我们还会介绍怎么样将编译好的程序下载到ESP8266-12f中。 第一步: 下载官方demo框架,从 http://wiki.ai-thinker.com/esp8266/examples 下载,当然,也可以在文章最后下载我的附件,下载完后,我们将文件添加到SDK中进行编译,步骤如图: 点开C/C++分支,并选中Existing Code as Makefile Project: 去除C++支持,选中 Cygwin GCC,点击Browser,选中我们解压后所在的目录。点击finish。 到这里,应该就成功的将我们的工程文件添加到SKD当中了,红色框内为所添加的文件。 接下来开始编写程序部分,这里我们涉及到ESP8266-12F的IO口的控制,控制方法其实和STM32库函数类似比如 先选定一个GPIO管脚。用 PIN_FUNC_SELECT(PIN_NAME, FUNC) 函数。比如我选定GPIO14这个管脚,则这样写: PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U, FUNC_GPIO14); 如果你设置这个管脚为高电平,则这样写: GPIO_OUTPUT

Debug版本和Release版本的区别

这一生的挚爱 提交于 2020-03-29 19:17:15
一、Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不讨论) Debug 版本: /MDd /MLd 或 /MTd 使用 Debug runtime library(调试版本的运行时刻函数库) /Od 关闭优化开关 /D "_DEBUG" 相当于 #define _DEBUG,打开编译调试代码开关(主要针对 assert函数) /ZI 创建 Edit and continue(编辑继续)数据库,这样在调试过 程中如果修改了源代码不需重新编译 /GZ 可以帮助捕获内存错误 /Gm 打开最小化重链接开关,减少链接时间 Release 版本: /MD /ML 或 /MT 使用发布版本的运行时刻函数库 /O1 或 /O2 优化开关,使程序最小或最快 /D "NDEBUG" 关闭条件编译调试代码开关(即不编译assert函数) /GF 合并重复的字符串,并将字符串常量放到只读内存,防止 被修改

gcc编译C++程序

六眼飞鱼酱① 提交于 2020-03-29 17:06:30
gcc动态编译和静态编译方法 一.单个源.cpp文件生成可执行程序 下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码: 1 /* helloworld.cpp */ 2 #include <iostream> 3 int main() 4 { 5 std::cout << "hello, world" ; 6 return(0); 7 } ***** c++ helloworld.cpp -o hello -Wall 编译器c++ 通过检查命令行中指定的文件的后缀名可识别其为 C++ 源代码文件,同时打印提示信息。 编译器默认的动作:编译源代码文件生成对象文件(object file) 链接对象文件和 libstdc++ 库中的函数得到可执行程序。然后删除对象文件。 由于命令行中未指定可执行程序的文件名,编译器采用默认的 a.out。 程序可以这样来运行: ***** ./hello hello, world 程序c++/g++ 是将 gcc 默认语言设为 C++ 的一个特殊的版本,链接时它自动使用 C++ 标准库而不用 C 标准库。 通过遵循源码的命名规范并指定对应库的名字,用 gcc 默认编译c文件,通过扩展来编译链接 C++ 程序也是可行的, 如下例所示: ***** gcc helloworld.cpp -lstdc++ -o

stdafx相关介绍

只谈情不闲聊 提交于 2020-03-29 12:12:25
使用过Visual Studio,VC++的朋友对stdafx.h这个文件一定非常熟悉。我们新建工程的时候他就自动出现了,并且在每个.cpp文件的最前面都有一个#include "stdafx.h"。这个文件一定有他的作用,然而我们也经常会因为他遇到各式各样的问题,所以这里给大家介绍一下这个文件的作用和意义。 简介: stdafx,全称StandardApplication Framework Extensions,标准引用框架扩展。 其实就是头文件预编译,我们知道C++文件进行编译时,需要先进行预编译,包括宏定义替换,条件编译以及#include文件包含。 这里就是将一个工程中可能会经常使用的一些MFC头文件(Windows.h,afxwin.h等)预先编译,这样在以后的编译时就可以略过这部分,在预编译的基础上进行编译,从而加快编译速度。 工作原理: stdafx.h中没有函数库,只是定义了一些环境参数,包含一些头文件,使得编译出来的程序能在32位的操作系统环境下运行。 Windows和MFC的include文件都非常大,即使有一个快速的处理程序, 编译程序 也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。 为避免这种浪费,AppWizard(应用向导,就是我们新建工程前的一些配置窗口

stdafx.h 的作用

点点圈 提交于 2020-03-29 12:06:26
stdafx.h VC工程里面经常见到stdafx.h这个头文件,以前也没有特别注意,但是这个文件用不好经常会出错。 stdafx的英文全称为:Standard Application Framework Extensions(标准应用程序框架的扩展)。 所谓 头文件预编译 ,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。 简介 预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。 编译器通过stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的 编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。 因此, 所有的MFC实现文件第一条语句都是:#include "stdafx.h" 。在它前面的所有代码将被忽略,所以其他的头文件应该在这一行后面被包含。否则,你将会得到“No such file or directory

MFC学习(六)计算器

岁酱吖の 提交于 2020-03-29 11:24:26
1 stdafx.h    所谓头文件 预编译 ,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。 预编译 头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。 编译器 通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。    因此,所有的MFC实现文件第一条语句都是:#include "stdafx.h"。在它前面的所有代码将被忽略,所以其他的头文件应该在这一行后面被包含。否则,你将会得到“No such file or directory”这样让你百思不得其解的错误提示。    Windows和MFC的include文件都非常大,即使有一个快速的处理程序, 编译程序 也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个