一个指针经 restrict 修饰后,它(可能经过指针运算后)指向的对象
不会不能有其它别名。并非不会,而是不能。
不会意味着编译器会阻止你为它创建别名,创建别名会导致编译错误。
但实际上只是不能,创建别名最多产生警告,程序还是能运行,而且还可能完全无错(因为编译器优化后程序出问题只是概率事件)。
所以,
restrict体现的是你的自信,你得首先保证你的代码没有对该变量创建别名,然后才能给它加上restrict。就像
volatile,是你不自信,觉得优化这个变量会出问题,才给它加上volatile。至于不加会不会出问题,得具体问题具体分析。
@无名啊,
volatile和restrict是编译器优化指示标记,其中volatile阻止对该标识符进行优化,restrict建议编译器对该标识符进行优化。
volatile的语义:小心,这个变量的用途很复杂,优化这个变量很可能会导致程序出问题!
restrict的语义:我保证我只通过这个变量访问它指向的内存区域,你随便优化它,绝对不会出问题!这些都只是给编译器的提示,编译器不一定会遵循指示。比如,使用
-O0编译时,加不加volatile和restrict参数都没有任何区别。只有-O1、-O2、-O3等有区别。对于VC++编译器,Debug模式应该体现不出区别,只有Release模式才有区别。
const与它们不一样,它不仅是编译器优化指示标记,还进行了语法上的限制。如果不通过强制类型转换去除const标记,则无法对变量进行写入。不过,因为
const也是编译器优化指示标记,它的语义是:我保证不会对该变量进行写入,你放心优化。所以如果后续通过强制类型转换去掉const并写入变量,则Release版程序可能会出问题。注意只是可能,编译器会尽量给出不出问题的代码,所以真想遇到问题也需要碰运气。
先 @ 万能的 @老虎会游泳
已经添加了一个Vortex模组管理器,亲测可以正常安装mod
层主 @ysyvsl 于 2023-01-26 17:48 删除了该楼层。
webcat
用APP封装的容易闪退
手机
这回,不用为Linux命令发愁了吧
Python爱好者社区 2023-01-24 15:00
最近很多小伙伴找我要一些 Linux 基础资料,于是我翻箱倒柜,把这份华为大牛总结的 Linux 归纳笔记找出来,免费共享给大家!
据说有小伙伴靠这份笔记顺利进入 BAT 哦,所以一定要好好学习这份资料!
资料介绍:
这份资料非常全面且详细,从 Linux 常用命令到 Linux 常用操作,再到网络管理、性能优化,几乎覆盖了 Linux 基础学习的方方面面,非常适合初学者入门!
资料也按目录进行编排,每一章下面都有更具体的内容:
而且,这份资料不是扫描版的,里面的文字都可以直接复制,非常便于我们学习:
怕不是这个圈子里藏了你这么一位SQL大佬吧@无名啊,
@张小强,封装成小程序我试过,APP应该也是可以
一加8Pro
@张小强,一个木函、Fusion App 啥的可以么?(没咋用过,但记得有这个功能)
@老虎会游泳,常规语言有啥算法吗?啥啥啥相似度?或者……?
人工智能大概怎么个过程呢?
@卷心菜,不算啥大佬吧,只是 SQL 写起来繁杂,看起来复杂而已。实际思路很简单
能用纯SQL实现
要我的话肯定得用常规编程语言,甚至上人工智能
@张小强,这里进行了
i++。var ccc = '0c4a2013ebd12f0de2b54163fe318b1e'.charCodeAt(i++);
@老虎会游泳,这段代码不是死循环吗?
换了小高雄的脚本备份
@上善若水,那为什么不用22的ssh正向代理呢?
@卷心菜,怎么说呢,其实通过防火墙把宝塔面板的端口设置成仅允许指定ip访问,也是一样的需要有固定上网ip,可以把它设置vpn的ip。通过frp呢,就不需要固定上网ip也不需要在防火墙中放行宝塔所使用的端口。这两种方法也就第一次配置的时候有点繁琐,但是一劳永逸,而你说的这种太麻烦了,每次都要连接ssh进行你所说的操作。
