Если dot_product
объявленЯвляется ли законным для псевдонима аргументов указателя «const ограничивать»?
float dot_product(const float* restrict a, const float* restrict b, unsigned n);
бы называть его с
dot_product(x, x, x_len)
быть "не определено", в соответствии со стандартом C99?
Редактировать
x
является указателем, конечно же, указывая на sizeof(float) * x_len
байт памяти, x_len
является unsigned
. Этот вопрос касается псевдонимов.
У меня нет стандарта для цитирования, но я должен представить, что это неопределенное поведение. Вы явно говорите компилятору, что никакие другие указатели не ссылаются на одно и то же место памяти, а затем нарушают этот намек. Я не думаю, что это повлияет на это. –
Чтобы противоречить самому себе: если 'dot_product' является обычным определением точечного продукта, то я не думаю, что это будет * важно *. То есть, нарушая 'ограничение', не имеет значения, выполняете ли вы только операции чтения с указателем. Только когда вы пишете, я ожидаю, что возникнут проблемы. –
Должен ли я удалить «редактировать»? Это кажется излишним. Я был потрясен тем, что ** два человека неправильно поняли мой вопрос. – MaxB