Как Чтобы сообщить компилятору C или C ++, что указатели не псевдоним

У меня есть функция, которая принимает массив указателей, таких как:

void foo(int *ptrs[], int num, int size)
{ 
  /* The body is an example only  */
     for (int i = 0; i < size; ++i) { 
       for (int j = 0; j < num-1; ++j)
         ptrs[num-1][i] += ptrs[j][i];
     }
}

То, что я хочу передать компилятору, состоит в том, что указатели PTRS [I] не являются псевдомиазами друг друга и что массивы PTRS [I] не перекрываются. Как я должен Сделайте это? Мой скрытый мотив состоит в том, чтобы поощрить автоматическую векторизацию.

Кроме того, есть ли способ получить тот же эффект, что и __ ограничение __ на итераторе STD :: Vector ?

8
задан Mat 2 August 2012 в 18:12
поделиться