- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
__declspec(restrict) 和 __declspec(noalias) 有什么区别我已阅读此页 https://msdn.microsoft.com/en-us/library/k649tyc7.aspx .但不清楚它是什么。谁能解释一下这两个注释解决了什么问题。
最佳答案
__declspec(restrict)
声明函数的返回值 指向未别名的内存。也就是说,函数返回的内存保证不能通过程序中的任何其他指针访问。
__declspec(noalias)
声明该函数不会在函数的参数 的第一级间接寻址之外修改内存。也就是说,参数是函数对外界的唯一引用。
这些都不能解决任何问题 - 它们只是对编译器的性能提示。通常,编译器需要确保诸如在寄存器中缓存中间结果或重新排序代码之类的事情不会受到函数调用的潜在别名的影响;这些声明是您作为程序员的保证,即编译器在编译这些特定函数时无需担心这一点。
关于c++ - __declspec(restrict) 和 __declspec(noalias) 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28689318/
如果我理解正确,__declspec(noalias) 会告诉编译器作为参数传递的所有指针都没有别名。 __declspec(noalias) void multiply(float * a, flo
正如 Rust 引用文档所说 Breaking the pointer aliasing rules. &mut T and &T follow LLVM’s scoped noalias model
假设有三个矩阵a,b,ca 和 c 共享同一个缓冲区,但名称不同 应该做一些检查 if(a.data() == c.data()){ a = b * c; }else{ a.noali
__declspec(restrict) 和 __declspec(noalias) 有什么区别我已阅读此页 https://msdn.microsoft.com/en-us/library/k649
下面是指针别名的例子: pub unsafe fn f(a: *mut i32, b: *mut i32, x: *const i32) { *a = *x; *b = *x; } 编译成以下
我的问题与 C 中的 restrict 限定符和 LLVM 中的 noalias 属性用作函数参数时的不同语义有关。 根据LLVM documentation for noalias : This i
我是一名优秀的程序员,十分优秀!