c语言关键字

vs2015开发ffmpeg出现error LNK2019: 无法解析的外部符号

跟風遠走 提交于 2020-01-20 19:39:02
用vs2015开发ffmpeg时,头文件,lib文件都正确设置,但是在编译时候提示error LNK2019: 无法解析的外部符号,经研究发现ffmpeg的库都是c语言的,而我编译器是c++,故需要在#include头文件时需要加上关键字 extern "C" extern "C" { #include "libavutil/frame.h" #include "libavutil/mem.h" #include "libavformat/avformat.h" #include "libavcodec/avcodec.h" } 即可编译成功! 来源: CSDN 作者: songzhaorong 链接: https://blog.csdn.net/songzhaorong/article/details/104053255

C语言学习系列:typedef

醉酒当歌 提交于 2020-01-18 11:55:58
typedef C 语言提供了 typedef 关键字,可以使用它来为类型取一个新的名字,即自定义类型。 下面的实例为单字节数字定义了一个术语 BYTE( 也可以使用小写字母 byte ) : typedef unsigned char BYTE; 这样定义之后,标识符 BYTE 可作为类型 unsigned char 的缩写,来声明定义变量: BYTE b1, b2; 也可以使用 typedef 来为用户自定义的数据类型取一个新的名字。例如,可以对结构体使用 typedef 来定义一个新的数据类型名字,然后使用这个新的数据类型来直接定义结构变量: typedef struct Books { char title[50]; char author[50]; char subject[100]; int book_id; } Book;//结构体类型定义 int main(){ Book book;//结构体类型的变量声明 return 0; } typedef vs #define #define 是 C 指令,用于为各种数据类型定义别名,与 typedef 类似。不同之处在于: typedef 仅限于为类型定义符号名称, #define 不仅可以为类型定义别名,也能为数值定义别名。例如: #define PI 3.14159265 typedef 是由编译器执行解释的,

c语言基础----函数

廉价感情. 提交于 2020-01-17 21:36:14
函数定义 dataType functionName(){ //body } dataType 是返回值类型,它可以是C语言中的任意数据类型,例如 int、float、char 等。 functionName 是函数名,它是 标识符 的一种,命名规则和标识符相同。函数名后面的括号 ( ) 不能少。 body 是函数体,它是函数需要执行的代码,是函数的主体部分。即使只有一个语句,函数体也要由 { } 包围。 如果有返回值,在函数体中使用 return 语句返回。return 出来的数据的类型要和 dataType 一样。 内联函数 要将一个函数定义为内联函数,需要在函数定义时加上 inline 函数修饰符。关键字 inline 告诉编译器,任何地方只要调用内联函数,就直接把该函数的机器码插入到调用它的地方。这样程序执行更有效率,就好像将内联函数中的语句直接插入到了源代码文件中需要调用该函数的地方一样。 inline 修饰符并非强制性的:编译器有可能会置之不理。例如,递归函数通常不会被编译成内联函数。编译器有权自行决定是否要将有 inline 修饰符的函数编译成内联函数。 和其他函数不同的是,在每个用到内联函数的翻译单元中,都必须重复定义这个内联函数。编译器必须时刻准备好该函数定义,以便在调用它时及时插入内联代码。因此,经常在头文件中定义内联函数。

C语言标准

偶尔善良 提交于 2020-01-17 01:58:14
K&R C   1978年,丹尼斯•里奇(Dennis Ritchie)和布莱恩•柯林汉(Brian Kernighan)合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程式设计师称作“K&R C”,第二版的书中也包含了一些ANSI C的标准。K&R C主要介绍了以下特色: 结构(struct)类型 长整数(long int)类型 无符号整数(unsigned int)类型 把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = -10还是i =- 10,使得处理上产生混淆。   即使在后来ANSI C标准被提出的许多年后,K&R C仍然是许多编译器的 最低标准要求 ,许多老旧的编译仍然运行K&R C的标准。 ANSI C和ISO C   C 的第一个标准是由ANSI发布的。虽然这份文档后来被国际标准化组织(ISO)采纳并且ISO发布的修订版也被ANSI采纳了,但名称ANSI C(而不是 ISO C)仍被广泛使用。ANSI C现在被几乎所有广泛使用的编译器支持。现在多数C代码是在ANSI C基础上写的。 C89和C90   1983年,美国国家标准协会组成了一个委员会,X3J11,为了创立 C 的一套标准。经过漫长而艰苦的过程,该标准于1989年完成,并在作为ANSI X3.159-1989 "Programming

C语言标准

两盒软妹~` 提交于 2020-01-16 03:58:06
写在前面:K&R C不用说。 个人以为,我们平常说的标准C,指的是ANSI C,ISO C,C89,C90。 K&R C   1978年,丹尼斯•里奇(Dennis Ritchie)和布莱恩•柯林汉(Brian Kernighan)合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程式设计师称作“K&R C”,第二版的书中也包含了一些ANSI C的标准。K&R C主要介绍了以下特色: 结构(struct)类型 长整数(long int)类型 无符号整数(unsigned int)类型 把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = -10还是i =- 10,使得处理上产生混淆。   即使在后来ANSI C标准被提出的许多年后,K&R C仍然是许多编译器的最低标准要求,许多老旧的编译仍然运行K&R C的标准。 ANSI C和ISO C   C 的第一个标准是由ANSI发布的。虽然这份文档后来被国际标准化组织(ISO)采纳并且ISO发布的修订版也被ANSI采纳了,但名称ANSI C(而不是 ISO C)仍被广泛使用。ANSI C现在被几乎所有广泛使用的编译器支持。现在多数C代码是在ANSI C基础上写的。 C89和C90   1983年,美国国家标准协会组成了一个委员会,X3J11,为了创立 C 的一套标准。经过漫长而艰苦的过程

【C语言】变量类型

让人想犯罪 __ 提交于 2020-01-15 11:16:24
转载自cnblogs.com/mjios 语言有丰富的数据类型和运算符,因此计算能力非常强大,计算过程中使用的值一般用变量来存储。变量也是有分类型的,不同类型的变量有不同的存储类型、不同的生命周期、不同的作用域,C语言也提供了一些关键字来设置变量的属性(比如设置存储类型、生命周期)。 回到顶部 一、变量的作用域 C语言根据变量 作用域 的不同,将变量分为局部变量和全局变量。 1.局部变量 1> 定义:在函数内部定义的变量,称为局部变量。 形式参数也属于局部变量 。 2> 作用域:局部变量只在定义它的函数内部有效,即局部变量只有在定义它的函数内部使用,其它函数不能使用它。 2.全局变量 1> 定义:在所有函数外部定义的变量,称为全局变量。 2> 作用域:全局变量的作用范围是从定义变量的位置开始到源程序结束,即全局变量可以被在其定义位置之后的其它函数所共享。 1 int a; 2 3 int main () 4 { 5 int b; 6 return 0; 7 } 第1行的变量a是全局变量,第5行的变量b是局部变量。 回到顶部 二、变量的存储类型 * 变量的存储类型就是指变量存储在什么地方。有3个地方可以用于存储变量:普通内存、运行时堆栈、硬件寄存器。变量的存储类型决定了变量何时创建、何时销毁以及它的值能保持多久,也就是决定了变量的生命周期。 * C语言根据变量的 存储类型 的不同

C语言06-函数的调用过程II、数组

[亡魂溺海] 提交于 2020-01-13 18:20:18
文章目录 函数调用过程 栈帧的概念 数组 sizeof 函数调用过程 函数调用过程中的步骤: 按照调用约定传参 保存返回地址 流程转移 保存上一层栈帧地址 开辟局部变量空间 开始执行被调用函数的代码 详细得展示各个步骤。 栈帧的概念 我们已经知道,因为每个函数被调用过程,那个函数的参数、局部变量、返回地址, 都会放在一断 特定的栈区域中 ,并且 每个被调用的函数,都对应了一段特定的栈区 域,那一段特定的栈区域 ,称为 那一个被调用函数的栈帧 。 void Fun2(int arg) { int nValue = 0; printf("fun2:%08X, %p\r\n", &arg, &nValue); } void Fun1(int arg) { int nValue = 0; Fun2(0x22222222); printf("fun1:%08X, %p\r\n", &arg, &nValue); } int main(int argc, char* argv[]) { printf("main:%p\r\n", &argc); Fun1(0x11111111); return 0; } 通过以上代码可以验证,紧挨着返回地址的“栈帧”,确实是指向了 上一层调用方的栈帧 ,这种设计,使得当前函数结束后,程序流程都可以顺利地找到上一层栈帧。 通过以上的图和代码实验

C语言中变量分类和内存分区

烂漫一生 提交于 2020-01-13 06:07:11
文章目录 变量的分类和内存分区 内存分区 变量的分类 变量的分类和内存分区 内存分区 到目前为止,我们知道学习了全局变量和局部变量 并且已经知道全局变量是在内存中的全局区,局部变量在内存中的栈区 内存是分区的,简单而言,内存分为三个区域: 全局区:全局变量、代码机器码等放在此区域。全局区的大小由程序本身代码以及全局变量的大小决定。 栈区: 存放参数、局部变量、返回地址等和函数有关的内容。 堆区:除了全局区、栈区之外的空间,都算作对堆区。堆区域的内存,需要程序员手工管理(malloc和free)。 类比酒店 动态的实现租房和退房。 变量的分类 变量的分类设计变量的几个重要的属性: 变量所在的内存分区 不同的变量的内存分区是不一样的 变量的作用域 变量在什么范围内可以使用,一般分为:函数作用域、文件作用域、工程作用域 变量的生命周期: 一个变量在内存中被分配空间到空间被释放销毁的过程,被称为一个生命周期。 了解了之后来介绍变量的分类 ###全局变量、局部变量、静态局部变量、静态全局变量 使用关键字static修饰局部变量,就得到了静态局部变量。 void FunTest() { static int s_nValue = 10; s_nValue++; } int main(int argc, char* argv[]) { FunTest(); FunTest(); FunTest(

一个简单的c程序~~c语言

岁酱吖の 提交于 2020-01-12 23:34:07
** 输出“hello,world! I‘m coming!” ** 该c程序充分说明了c程序是由什么位置开始、什么位置结束的。 具体的代码如下: 01 #include <stdio.h> //包含头文件 02 03 int main() //主函数main 04 { 05 printf("Hello,world! I'm coming!\n"); //输出要显示的字符串 06 return 0; //程序返回0 07 } 一个简单的c程序是由一下几部分内容构成的: 1. #include指令 功能:预处理 “#”:预处理命令“ #include”:使用头文件的指令 “stdio.h”:函数库,头文件、首文件 2. 空行和空格 目的:让代码之间层次更加清晰 加行或空格一般不会影响程序 注意:在两个关键字之间必须用空格隔开(例如 else if) main()函数声明 作用:声明main()函数 “int”:关键字,代表数据的类型是整型 int main():函数头部分,一个程序的入口部分 程序是从main()函数头开始执行,然后进入到main()函数中,执行main()函数中的内容。 函数体 一个函数可分为两个部分:一个是函数头,另一个是函数体 下面两个大括号构成函数体,第5、6行是函数体中要执行的内容 04 { 05 printf("Hello,world! I'm

C语言到C++入门

久未见 提交于 2020-01-12 21:58:49
C语言到C++入门 前言 很早以前就学了c语言,后来也学习了Java语言,突然想看看c++语言。也没想学的多深,毕竟C++是公认的难、不过我想有其他语言基础,学习一下基本语法应该相对简单的。 环境 g++ c++17 1、准备 C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。 经常看到的一句话是 c++就是 c with class c++的文件扩展名是cpp. 2、结构 一个c++的语言结构如下: 头文件, 中含有c++的标准输入输出流 命名空间、用于管理模块,一个文件中可以有多个命名空间 #include <iostream>//头文件 using namespace std;//命名空间 void add(int *x,int y);//函数声明 int main() { int x=0; add(&x,10); cout<<x<<" end"<<endl;//标准输出流 string s;//字符串 cout<<"input string"<<endl; cin>>s;//标准输入 cout<<"out "<<s;//换行 } void add(int *x,int y){//函数 *x=*x+y; } 这个文件使用了 iostream文件下的std命名空间。cout\cin都是此文件std下的功能。>>箭头是流操作符。 3、命名空间