__restrict в g ++ и MSVC с синтаксисом массива

Я в процессе обновления критичных к производительности библиотек для использования restrict, как реализовано в C ++ 11 g ++ и MSVC с ключевым словом __restrict,

Есть много подпрограмм и функций, которые выглядят примерно так:

void f(float a[],float b[]);

В приведенном выше примере f это процедура, аргументы которой должны быть ограничены. К сожалению, насколько я могу судить, это невозможно при сохранении этого синтаксиса. Теперь ясно, что это можно переписать, используя указатели как:

void f(float*__restrict a,float*__restrict b);

Что здесь потеряно, так это семантический факт a а также b являются массивами (я предпочитаю использовать обозначение указателя для однозначных указателей и обозначение массива для указателей массива). Описательные имена аргументов (опущены выше) помогают, но только так.

Я хотел бы подтвердить, что объявление ограниченных переменных с использованием синтаксиса массива в настоящее время невозможно для этих компиляторов.

2

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]