C99特性】的更多相关文章

1.如果编译器支持C99标准那么局部变量的声明可以在语句之后,如: void func(void) { bool status; if(status == true) { status = false; } int data[20]; //变量的声明可以在语句后 memset(data, 0x00, sizeof(data)); //也可以这样声明使用变量 for(int i=0; i<20; i++) { data[i] = i; } }…
__FILE__   对应代码文件名__LINE__   对应代码行号__DATE____TIME____FUNC__ __FUNCTION__ 在Visual Studio 2005中,默认情况下,此特性是激活的,但不能与/EP和/P编译选项同时使用.请注意在IDE环境中,不能识别__func__ ,而要用__FUNCTION__ 代替. Comeau的用户也应使用 __FUNCTION__ ,而不是 __func__ . C++ BuilderX的用户则应使用稍稍不同的名字:__FUNC__…
因为偶然的机会,在图书馆看到<深入理解C++ 11:C++11新特性解析和应用>这本书,大致扫下,受益匪浅,就果断借出来,对于其中的部分内容进行详读并亲自编程测试相关代码,也就有了整理写出这篇读书笔记的基础.C++作为踏入编程的最初语言,一直充满感情,而C++11作为新标准虽然推出一段时间了,却因为总总原因直到现在才去开始真正了解,不过一句话回荡在脑中:当你认为为时已晚的时候,恰恰是最早的时候!从C++98到C++11, C++11标准经历了10几年的沉淀,以全新的姿态迎接新的挑战,长话短说,…
Visual Studio2013终于开始比较良好地支持C99特性了.在此之前,如果用C语言写代码的话,变量名都需要放到函数体的前面部分,代码写起来十分别扭. 而Visual Studio2013中的C编译器已经支持了不少C99标准,让我来为大家盘点一下. 现在仍然不支持的语法特性有: 1.inline关键字:在VC中,仍然需要用微软自己定义的__inline,而尚不支持inline,尽管inline在C++中是支持的. 2.restrict关键字. 3._Complex与_Imaginary:…
ffmpeg主要是基于linux开发,当然它也支持windows,不过并不支持visual studio系列IDE(因为它使用了大量C99特性,而vs不支持C99). 要想在windows上使用 一可通过下载源码并编译,编译方法有两个,后者比较简单 1.在Windows下通过mingw或cygwin来编译 2.在linux上构建windows交叉编译环境来编译 二可直接下载编译好的库文件,感谢zeranoe提供的库文件:FFmpeg relase builds 它还提供了linux下编译FFmp…
第 10 章 数组和指针 在本章中你将学习下列内容: · 关键字: static (静态) · 运算符: & * (一元) · 创建与初始化数组的方法. · 指针(基于已学的基础知识)及指针和数组间的关系. · 编写使用数组函数. · 二维数组. 人们借助计算机来记录每月开支,日降水量,季度销售额,以及每周收支情况等.企业借助计算机来管理员工薪水,仓库存货清单,以及客户交易的记录等.程序员不可避免地需要处理大量的想到关联的数据.采用数组通常能够有效便捷地处理这类数据.第 6 章“C 控制语句:循…
第三章 数据和 C 在本章中你将学习下列内容: 1. 关键字: int, short, long, unsigned, char, float, double, _Bool, _Complex, _Imaginary 2. 运算符: sizeof 3. 函数 scanf() 4. C 使用的基本数据类型. 5. 整数类型和浮点类型区别的区别. 6. 对上述类型,如何书写常量和声明变量. 7. 使用 printf() 和 scanf()函数读写各种类型数据的值. 3.1 示例程序 这里仍以一个示例…
转自:http://www.linuxdiyf.com/viewarticle.php?id=174074 Unix和Linux下C语言学习指南 引言 尽管 C 语言问世已近 30 年,但它的魅力仍未减退.C 语言继续吸引着众多的开发者,他们为了编写.移植或维护应用程序而必须学习新技能. 本文是为了满足对C语言初学者或想提高自身C语言修为的开发人员的需要而写的.希望对您的学习和工作有所帮助.您也许不赞同其中的某些方法,但我们希望您会喜欢其中的一些. 本文不介绍作为一个程序员应掌握得语言细节,而是…
*****代码在Debian g++ 5.40 / clang++ 3.8(C++11)下编写调试***** 本章主要是关于字符串.数组的内容,以及一些简单的容器知识. 1.using的声明 using关键字有2种用法: using std::cin; //这种叫做using声明,注意分号 using namespace std;     //这种叫做using指示,注意分号 两者的区别是一个using声明一次只引入一个std的成员,而using指示则将整个命名空间的所有成员都引入. 头文件不要…
仅仅为了获取函数名,就在函数体中嵌入硬编码的字符串,这种方法单调乏味还易导致错误,不如看一下怎样使用新的C99特性,在程序运行时获取函数名吧. 对象反射库.调试工具及代码分析器,经常会需要在运行时访问函数的名称,直到不久前,唯一能完成此项任务并且可移植的方法,是手工在函数体内嵌入一个带有该函数名的硬编码字符串,不必说,这种方法非常单调无奇,并且容易导致错误.本文将要演示怎样使用新的C99特性,在运行时获取函数名. 那么怎样以编程的方式从当前运行的函数中得到函数名呢? 答案是:使用__FUNCTI…
BLAS(Basic Linear Algebra Subprograms)是一组线性代数计算中通用的基本运算操作函数集合[1] .BLAS Technical (BLAST) Forum负责规范BLAS函数接口, 并在网站[1]公布一个由Fortran语言编写的BLAS库.这个Fortran版BLAS库通常被称为BLAS参考库(the reference implementation). BLAS参考库使用的算法能高效地给出正确的结果,但仍有许多优化潜力.要想获得更高的计算效率,可以使用优化的…
/*----------------------------- enum.c -- 使用枚举类型的值 -----------------------------*/ #include <stdio.h> #include <string.h> //#include <stdbool.h> //C99特性 #define LEN 30 char* s_gets(char *st, int n); enum spectrum {red, orange, yellow, gr…
1.已知两个数字为1~30之间的数字,甲知道两数之和,乙知道两数之积,甲问乙:“你知道是哪两个数吗?”乙说:“不知道”.乙问甲:“你知道是哪两个数吗?”甲说:“也不知道”.于是,乙说:“那我知道了”,随后甲也说:“那我也知道了”,这两个数是什么? 答案: 允许两数重复的情况下 答案为x=, y=; 甲知道和A=x+y=, 乙知道积B=x*y= 不允许两数重复的情况下有两种答案 答案1: 为x=, y=; 甲知道和A=x+y=, 乙知道积B=x*y= 答案2: 为x=, y=; 甲知道和A=x+y…
作为第一篇,首先要说一下C++11与C99的兼容性. C++11将 对以下这些C99特性的支持 都纳入新标准中: 1) C99中的预定义宏 2) __func__预定义标识符 3) _Pragma操作符 4) 不定参数宏定义以及__VA_ARGS__ 5) 宽窄字符串连接 这些特性并不像语法规则一样常用,并且有的C++编译器实现也都先于标准地将这些特性实现,因此可能大多数程序员没有发现这些不兼容.但将这些C99的特性在C++11中标准化无疑可以更广泛地保证两者的兼容性.我们来分别看一下. 这次,…
vs项目中见过这种获取 当前函数名的调用.觉得挺方便的就记录一下. ============================================================== 转载地址:http://blog.csdn.net/dafan/article/details/5781491 __FILE____LINE____DATE____TIME____FUNC__ __FUNCTION__ 在Visual Studio 2005中,默认情况下,此特性是激活的,但不能与/EP和…
写在前面 FFmpeg是一个开源且跨平台的音视频解决方案,集采集.转码.流式化为一身,项目的libavcodec编解码模块和libavformat媒体格式模块,支持非常非常丰富的编解码格式和容器封装格式,是做媒体相关开发工作必须要掌握和借鉴的一个项目.定制和编译ffmpeg是做流媒体开发迟早要面对的,linux平台上相对简单,windows平台就比较麻烦了.本文的目的就是详细介绍下如何基于ubuntu交叉编译环境,编译和定制ffmpeg.   一  概述 ffmpeg主要是基于linux开发,当…
linux编程学习 工具篇 “公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习 C 语言编程常常用到的软件和工具. (一)操作系统 在 UNIX 或 Linux 系统中学习 C 很方便,所以在开始您的学习旅程前请先选择一个UNIX或 Linux 操作系统. 目前可供个人免费使用的UNIX或Linux系统有FreeBSD. RedHat Linux.SUSE Linux等,而且在安装包中还提供很多实用的工具,如:gcc, ma…
引言:在内核的系统调用函数里,常常遇到函数的參数使用restrict限定词限定的情况,以下就对该关键词做个总结. 1.restrict关键词是C99特性才加入的,因此在编译使用含有该限定词的程序时,一定要在后边加入-std=c99的标志,使得gcc能够支持c99标准. 2.restrict既然是个限定词.那么它限定什么变量呢?它仅仅能限定指针变量.经过它限定的数据对象,表明指针时訪问该数据对象的唯一且初始的方式.注意:这里的唯一表明了,由它限定的指针所指向的数据块.仅仅能由该指针訪问,不能由除它…
C语言标准的发展 C语言的发展历史大致上分为4个阶段:Old Style C.C89.C99和C11. C89是最早的C语言规范,于1989年提出,1990年先由ANSI(美国国家标准委员会,American National Standards Institute)推出ANSI版本,后来被接纳为ISO国际标准(ISO/IEC9899:1990),因而有时也称为C90,最经典的C语言教材[K&R]就是基于这个版本的,C89是目前最广泛采用的C语言标准,大多数编译器都完全支持C89,C99(ISO…
C99标准新特性的说明   一.说明 ====== 这里的讨论的是C语言的国际标准,即国际标准化组织ISO,制定的C语言标准.历史上ISO制定过4个版本的C语言标准,他们分别是:C90(ISO/IEC9899:1990).C95(ISO/IEC 9899/AMD1:1995).C99(ISO/IEC9899:1999).C11(ISO/IEC 9899:2011)   这里主要介绍一下C99相对C90而增加的新特性,并且在Gcc编译器中对这些新特性的进行测试.   二.C99新特性介绍 ====…
C99标准引入了变长数组,它允许使用变量定义数组各维.例如您可以使用下面的声明: ; ; double sales[rows][cols]; // 一个变长数组(VLA) 变长数组有一些限制,它必须是自动存储类的.这意味着变长数组必须在函数内部(包括主函数)或作为函数参量声明,而且声明时不可以进行初始化. 变长数组中的“变”并不表示在创建数组后可以修改其大小,变长数组的大小在创建后就是保持不变的,”变“的意思是说其维大小可以用变量来指定.…
我有点怀疑我会不会C语言了. 1.变长数组(VLA) ; scanf("%d", &n); int arr[n]; 2.数组初始化 ] = {[] = , [] = , [] = }; ; i < ; i++) { printf("%d\n", arr[i]); } 3.结构体初始化 struct Struct { int a; int b; int c; }; , .c = }; printf("%d %d %d\n", test…
c99标准允许使用变长数组,变的意思是可以根据变量的值来指定数组的维数,如根据用户的输入值指定数组的大小,印象中以前是不可以的.现在在gcc中是可以的(PS:ansi c标准是C90标准): ====================================================================== #include <stdio.h> #include <string.h> int    main(void) {     int n,i;     …
(1)对数组的增强 可变长数组 C99中,程序员声明数组时,数组的维数可以由任一有效的整型表达式确定,包括只在运行时才能确定其值的表达式,这类数组就叫做可变长数组,但是只有局部数组才可以是变长的.可变长数组的维数在数组生存期内是不变的,也就是说,可变长数组不是动态的.可以变化的只是数组的大小.可以使用*来定义不确定长的可变长数组. 数组声明中的类型修饰符 在C99中,如果需要使用数组作为函数变元,可以在数组声明的方括号内使用static关键字,这相当于告诉编译程序,变元所指向的数组将至少包含指定…
1. 概述 最近在看C++ Primer5 刚好看到一半,总结一下C++11里面确实加了很多新东西,如果没有任何了解,别说自己写了,看别人写的代码估计都会有些吃力.C++ Primer5是学习C++11的比较好的书籍.这篇文章仅总结关于C++11中的新东西,老的东西不再赘述.本文的所有代码仅仅值列出关键代码,并且所有特性都已经用编译器验证过,我的编译环境 gcc 5.3.1  g++ 5.3.1 ,据说 4.7以上的版本已经支持大部分C++11的特性,VS系列的编译器对C++11的支持情况不甚了…
转自:http://blog.csdn.net/zwvista/article/details/2429781 原文请见http://en.wikipedia.org/wiki/C%2B%2B0x. Rvalue reference and move semantics 右值引用与转移语义 在标准C++语言中,临时量(术语为右值,因其出现在赋值表达式的右边)可以被传给函数,但只能被接受为const &类型.这样函数便无法区分传给const &的是真实的右值还是常规变量.而且,由于类型为co…
挂羊头卖狗肉蓄意欺骗读者——谭浩强<C程序设计(第四版)>中所谓的“按照C99”(二) 在<谭C>p4:“本书的叙述以C99标准为依据”,下面从C89到C99的主要变化方面来看看是不是这样. <谭C>(前言)p12: ①  数据类型介绍中,增加了C99扩充的双长整型(long long int).复数浮点型(float complex,double complex ,long long complex).布尔型(bool)等,使读者有所了解. 实际上,C99不但增加了l…
c89 c99 注: GCC支持C99, 通过 --std=c99 命令行参数开启,如: 代码:gcc --std=c99 test.c -------------------------------------------------------------------------------------------------- 1.增加restrict指针 C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict指针表达式才能…
//本文转自:http://www.360doc.com/content/10/0324/18/2633_20101093.shtml 注: GCC支持C99, 通过 --std=c99 命令行参数开启,如: 代码:gcc --std=c99 test.c-------------------------------------------------------------------------------------------------- 1.增加restrict指针 C99中增加了公…
本文转载自: C89和C99标准比较  原文转载自: http://blog.programfan.com/article.asp?id=14051  http://blog.csdn.net/xgbing/article/details/2341941 注: GCC支持C99, 通过 --std=c99 命令行参数开启,如: gcc --std=c99 test.c Technorati 标签: C 标准 --------------------------------------------…