zoukankan      html  css  js  c++  java
  • restrictkeyword

    今天在移植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来得到对它的支持。

  • 相关阅读:
    CF 461B Appleman and Tree
    POJ 1821 Fence
    NOIP 2012 开车旅行
    CF 494B Obsessive String
    BZOJ2337 XOR和路径
    CF 24D Broken robot
    POJ 1952 BUY LOW, BUY LOWER
    SPOJ NAPTIME Naptime
    POJ 3585
    CF 453B Little Pony and Harmony Chest
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4284255.html
Copyright © 2011-2022 走看看