今天在移植ffmpeg到opencore时出现一个编译错误:

/libavcodec/dsputil.c:545: error: expected ';', ',' or ')' before 'block'

等等一大堆

到文件dsputil.c中发现是这个keywordrestrict引起的,说实话还是第一次见个keyword,赶紧上网查查:

keywordrestrict仅对指针实用,修饰指针,表明要改动这个指针所指向的数据区的内容,仅能通过该指针来实现,此keyword的作用是使编译器优化代码,生成更高效的汇编代码,“由restrict修饰的指针是最初唯一对指针所指向的对象进行存取的办法,仅当第二个指针基于第一个时,才干对对象进行存取.”

事实上restrict同const或valiate一样是一个修饰符而已,告诉编译器被 restrict修饰的指针所指向的对象,仅仅能通过这个指针或基于这个指针的其它指针进行操作,即限制訪问用restrict限制的指针指向的对象仅仅能通过这个指针訪问,这对编译器的优化非常有优点。
但要注意:restrict是C99中新增的keyword,在C89和C++中都不支持,在gcc中能够通过-std=c99来得到对它的支持。

restrictkeyword的更多相关文章

  1. linux环境下的线程的创建问题

    pthread_create函数用于创建一个线程 函数原型 #include<pthread.h> int pthread_create(pthread_t *restrict tidp, ...

随机推荐

  1. C++建立动态二维数组

    C++建立动态二维数组主要有两种方法: 1.使用数组指针,分配一个指针数组,将其首地址保存在b中,然后再为指针数组的每个元素分配一个数组                           int * ...

  2. 多校 4686 Arc of Dream hdu 矩阵解

    构造矩阵如下: Ai*bi AX*BX AX*BY AY*BX AY*BY 0 a(i-1)*b(i-1) Ai 0 AX 0 AY 0 a(i-1) Bi 0 0 BX BY 0 b(i-1) 1 ...

  3. HTML5在input背景提示文本(placeholder)的CSS美化

    本文转自http://www.webhek.com/html5-placeholder-css/ 在火狐浏览器中的写法和在谷歌浏览器和Safari里的写法有些不同.但相信以后会统一. /* 通用 */ ...

  4. BCB/Delphi中常用的VCL函数说明(字符串函数)

    本文档是ccrun(老妖)根据网上资料整理而成. --------------------内存分配--------------------函数名称:AllocMem函数说明:在队中分配指定字节的内存块 ...

  5. 判断Webbrowser是否加载完成

    var Form1: TForm1; glpDisp: IDispatch = nil; implementation {$R *.dfm} procedure TForm1.EmbeddedWB1D ...

  6. hdu 4715 Difference Between Primes 2013年ICPC热身赛A题 素数水题

    题意:给出一个偶数(不论正负),求出两个素数a,b,能够满足 a-b=x,素数在1e6以内. 只要用筛选法打出素数表,枚举查询下就行了. 我用set储存素数,然后遍历set里面的元素,查询+x后是否还 ...

  7. Jetty:配置安全

    用${jetty.home}和${jetty.base}配置安全 Jetty 9.1中:  1)${jetty.home}是jetty公布(二进制)的文件夹路径:  2)${jetty.base}是用 ...

  8. ios捕获异常并发送图片,便于解决bug

    在开发过程中,我们有时候会留下Bug,用户在使用我们的app 的时候,有时会出现闪退,这时候我们能够让用户给我们发送邮件,以让我们开发者更加高速的地位到Bug的所在.以最快的时间解决.同一时候也提高用 ...

  9. NumPy简明教程

    源地址:http://blog.csdn.net/sunny2038/article/details/9002531 http://blog.csdn.net/sunny2038/article/de ...

  10. information_schema模式表介绍 processlist

    在mysql里,我们一般通过show (full)processlist查看当前连接情况,处理各种数据库问题.现在在information_schema模式下,5.5以后增加了processlist表 ...