[英]C++ restrict qualifier on array reference
將__restrict__
限定符提供給二維數組引用的正確方法是什么? 例如:
void function(double (&)[3][3]);
據我所知, g++
編譯以下內容(但沒有性能差異):
void function(double (& __restrict__)[3][3]);
那是對的嗎?
全段:
template<class A, class B, class C>
static void
multiply(const A (&a)[L][L], const B (&b)[L][L],
C (&c)[L][L]) {
// C (&__restrict__ c)[L][L]) {
for (size_t j = 0; j < L; ++j) {
// C __restrict__ *cj = c[j];
for (size_t k = 0; k < L; ++k) {
double b_jk = b[j][k];
for (size_t i = 0; i < L; ++i) {
c[j][i] += a[k][i]*b_jk;
// cj[i] += a[k][i]*b_jk;
}
}
}
}
__restrict__
只能與指針一起使用。 不過,可以使用指針來模擬二維數組。 類似於some_array[x*w + y]
而不是some_array[x][y]
,其中some_array被定義為double *some_array[w]
。 我認為應該可以...
但老實說,您為什么還需要限制?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.