簡體   English   中英

C ++在數組引用上限制限定符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM