Orijinal C99'um (yani, ISO9899: 1999) metin yok; Sadece ISO9899:2007:TC3'un bir kopyası var. Bu belgenin 111. sayfasından alınan bu metnin C99 standardındaki metne çok benzer olmasını bekliyorum.
6.7.3.1 Formal definition of restrict
...
10. EXAMPLE 3
The function parameter declarations
void h(int n, int * restrict p, int * restrict q, int * restrict r)
{
int i;
for (i = 0; i < n; i++)
p[i] = q[i] + r[i];
}
illustrate how an unmodified object can be aliased through two restricted
pointers. In particular, if a and b are disjoint arrays, a call of the form
h(100, a, b, b) has defined behavior, because array b is not modified within
function h.
Bu açıkça, davranış tanımlanan sahip olarak sorulduğunda salt okunur erişim için kullanılan ad verilmiş işaretçileri sağlanan formun işlevlerini çağırmak gibi görünüyor. Diğer işaretçilerden herhangi biri ile yazma, tanımlanmamış davranışları çağrıştırır.
Teklif vermek için standartım yok, ancak tanımlanmamış bir davranış olduğunu hayal etmeliyim. Derleyiciye, başka hiçbir işaretçinin aynı bellek konumuna başvurmadığını ve bu ipucunu ihlal ettiğini açıkça söylüyorsunuz. Biliyorum, yapının bunu etkileyeceğini. –
Kendimle çelişki kurmak için: dot_product bir nokta ürünün normal tanımıysa, o zaman bunun bir önemi olmayacağını düşünüyorum. Yani, 'kısıtlama' ihlali sadece işaretçi üzerinde okuma işlemleri gerçekleştirirseniz farketmez. Sadece yazdığınız zaman sorunların oluşmasını beklerim. –
"Düzenleme" yi kaldırmalı mıyım? Gereksiz görünüyor. Şok oldum * iki ** kişi sorumu yanlış anladı. – MaxB