草庐IT

restrict

全部标签

c++ - 如何在此指针上应用限制限定符

如何将GCC/Clang的__restrict__限定符应用于类的this指针?这个问题的灵感来自RichardPowell的CppCon2018演讲,“HowtoArgue(ment).”我看到了一个类似的问题“restrictqualifieronmemberfunctions(restrictthispointer).”(所有代码都可以在CompilerExplorer上找到)voidbar();classFoo{public:intthis_example()const{if(value>0){bar();returnvalue;}else{returnvalue;}}priv

c++ - MSVC++ 限制关键字和局部变量

我已经阅读了很多关于restrict关键字的文章。但实际上,我能找到的每个示例似乎都只将输入参数引用到一个函数,也许还有一个值。我需要澄清我的理解。我发现一个函数看起来完全违反了带有输入参数和局部变量的关键字规则。此函数使用指向缓冲区的void*调用,指针声明为__restrict(这是MicrosoftVisualC++)。然而在函数的后面,声明了一个类型为UCHAR*的局部变量指针,并使其指向相同的受限输入参数缓冲区。这里是我正在谈论的函数的一个严重缩减版本:voidFoo(intnVersion,intnX,intnY,intnWidth,void*__restrictpBuff

c++ - 半泛型函数

我有一堆重载函数,它们对某些数据类型(如int、double和字符串)进行操作。大多数这些函数执行相同的操作,其中只允许一组特定的数据类型。这意味着我无法创建简单的通用模板函数,因为我失去了类型安全性(并可能导致函数内验证的运行时问题)。是否可以创建“半通用编译时类型安全函数”?如果是这样,如何?如果不是,这会出现在C++0x中吗?一个(无效的)想法;templatevoidfoo(Tbar);...foo((int)0);//OKfoo((std::string)"foobar");//OKfoo((double)0.0);//CompileError注意:我意识到我可以创建一个具有

c++ - __declspec(restrict) 和 __declspec(noalias) 有什么区别

__declspec(restrict)和__declspec(noalias)有什么区别我已阅读此页https://msdn.microsoft.com/en-us/library/k649tyc7.aspx.但不清楚它是什么。谁能解释一下这两个注释解决了什么问题。 最佳答案 __declspec(restrict)声明函数的返回值指向未别名的内存。也就是说,函数返回的内存保证不能通过程序中的任何其他指针访问。__declspec(noalias)声明该函数不会在函数的参数的第一级间接寻址之外修改内存。也就是说,参数是函数对外界的

c++ - 多态性和数据隐藏 : Does a base class override or ignore a derived class' access restrictions?

请看下面的代码list:#includeusingnamespacestd;classBase{public:virtualvoidMessage()=0;};classIntermediate:publicBase{};classFinal:publicIntermediate{voidMessage(){coutMessage();*///Works:Intermediate*finalPtr=&final;//orBase*finalPtr=&final;finalPtr->Message();return0;}注意以下事项:在抽象Base类中,纯虚函数message()是pub

c++ - 使用 restrict 关键字时出错

在下面的例子中:voidfoo(double*ptr){constdouble*restrictconstrestr_ptr=ptr;}我收到这个错误:error:expecteda";"constdouble*restrictconstrestr_ptr=ptr;^我用-std=c99编译,使用gcc3.4有什么想法吗? 最佳答案 在C++中,restrict不是关键字(Microsoftextensions除外)。这并不意味着它在C中的作用。看起来好像您试图将C99模式应用于您的C++编译器。使用C编译器编译C代码,使用C++编

c++ - 限制 C 中的限定符与 LLVM IR 中的 noalias 属性

我的问题与C中的restrict限定符和LLVM中的noalias属性用作函数参数时的不同语义有关。根据LLVMdocumentationfornoalias:Thisindicatesthatobjectsaccessedviapointervaluesbasedontheargumentorreturnvaluearenotalsoaccessed,duringtheexecutionofthefunction,viapointervaluesnotbasedontheargumentorreturnvalue.如果是restrict限定符,C11(Example3,page124

iphone - 使用企业分发配置文件控制谁使用 iOS 企业应用程序?

如果我订阅了iOSDeveloperEnterpriseProgram,并希望将某个应用的使用限制在特定个人的设备上,我可以使用企业分发配置文件指定允许的设备ID吗?...以类似于临时Beta测试的方式,最多可以指定100个指定的设备ID。ThisAppledoc说“接下来,您需要创建一个企业分发配置文件,以便您的用户可以在他们的设备上使用您的应用程序”,但没有回答这个问题。我希望限制对配置文件本身的访问是不够的,因为一个用户可以将其传递给另一个用户。 最佳答案 您不能将应用程序安装限制在少数设备上。它旨在支持企业模型,让它们安装在

安卓 : Restrict app not to run on Tablet

我开发了一个应用程序。现在我希望我的应用程序只能在手机上运行,​​而不是在平板电脑上运行。我搜索并尝试了:我把它写在androidmenifest.xml文件中。但没用。我的应用程序现在也在平板电脑上运行。我声明的是错误的,还是我应该包含任何其他内容。请建议我应该如何限制我的应用程序在平板电脑上运行。 最佳答案 我认为最好的方法是使用:这样你就可以确保设备不支持电话,我知道的所有平板电脑都是这种情况。 关于安卓:RestrictappnottorunonTablet,我们在StackOv

android - 编辑文本错误 : content duplicates after pressing a restricted character

我有一个包含受限字符的EditText。我只允许数字作为GalaxyS4上出现了一个奇怪的东西。它没有出现HTCDesireHD、HTCDesireX和ZTEBlade。我输入dddsss我输入一个瑞典字符,例如å。它没有出现,因为它不是允许的字符,所以内容仍然是dddsss我输入一个字符,例如uEditText的内容变为dddsssdddsssu我输入另一个字符,例如t内容变为dddsssdddsssudddsssut有时我按下退格键也会发生这种情况,所以这一定是按钮按下的问题。我添加了android:inputType="textNoSuggestions"但它没有帮助。有人遇到过