【发布时间】:2012-10-02 05:15:31
【问题描述】:
在我编写的程序中,我的一个函数声明是这样的:
bool parse( const sentence & __restrict sentence )
{
// whatever
}
当我使用 Microsoft Visual Studio 2010 Express 编译代码时,编译器会报错:
警告 C4227:使用不合时宜:忽略引用的限定符
但是,GCC 文档的this page 说:
除了允许使用受限指针外,还可以指定受限引用,这表明该引用在本地上下文中没有别名。
并且同一页给出了一个非常明确的例子:
void fn (int *__restrict__ rptr, int &__restrict__ rref)
{
/* ... */
}
我是否误解了 MVSC 的警告?还是应该将所有引用转换为指针,以便 __restrict 应用?
【问题讨论】:
-
这里比较 MSVC 和 GCC 有什么意义?
__restrict是一个厂商扩展,所以你必须遵守每个厂商的规则。
标签: c++ visual-c++ gcc reference restrict-qualifier