0
比方說,我有個字符的緩衝,我想避免使用的memcpy,並通過一個int *變量訪問它:__restrict是否允許忽略嚴格的別名規則?
char buffer[100];
strcpy(buffer,"Hello");
int* __restrict ptr=(int*)buffer;
*ptr= 97;
printf("%s",buffer);
當然打印「一個」現在這個。
我可以做到這一點,而不會遇到未定義的行爲?
我想你會走錯方向。如果有的話,'restrict'將會使編譯器*更有可能「破壞」某些東西,因爲它假定沒有別名。 – Mysticial
確實。 'restrict'使混疊規則更嚴格;除了使用「基於」的指針(基於「基於」的概念的聰明定義)之外,你不允許別名指針**。甚至沒有指向相同類型或「char」類型指針的指針。當然,其他類型的指針也不允許別名。 –
那麼我還需要使用工會嗎? –