Я в процессе обновления критичных к производительности библиотек для использования restrict
, как реализовано в C ++ 11 g ++ и MSVC с ключевым словом __restrict
,
Есть много подпрограмм и функций, которые выглядят примерно так:
void f(float a[],float b[]);
В приведенном выше примере f
это процедура, аргументы которой должны быть ограничены. К сожалению, насколько я могу судить, это невозможно при сохранении этого синтаксиса. Теперь ясно, что это можно переписать, используя указатели как:
void f(float*__restrict a,float*__restrict b);
Что здесь потеряно, так это семантический факт a
а также b
являются массивами (я предпочитаю использовать обозначение указателя для однозначных указателей и обозначение массива для указателей массива). Описательные имена аргументов (опущены выше) помогают, но только так.
Я хотел бы подтвердить, что объявление ограниченных переменных с использованием синтаксиса массива в настоящее время невозможно для этих компиляторов.
Задача ещё не решена.