:tmpfile_s에서 restrict의 목적은 무엇입니까? C11 초안에서
C11 (n1570), K.3.5.1.1에게
tmpfile_s
기능
errno_t tmpfile_s(FILE * restrict * restrict streamptr);
여기 restrict
규정의 목적은 무엇입니까 §?
다른 매개 변수가 없기 때문에 컴파일러는 이 restrict
없이 별칭이 아닌 것을 알 수 있습니다. 그렇습니까?
:tmpfile_s에서 restrict의 목적은 무엇입니까? C11 초안에서
C11 (n1570), K.3.5.1.1에게
tmpfile_s
기능
errno_t tmpfile_s(FILE * restrict * restrict streamptr);
여기 restrict
규정의 목적은 무엇입니까 §?
다른 매개 변수가 없기 때문에 컴파일러는 이 restrict
없이 별칭이 아닌 것을 알 수 있습니다. 그렇습니까?
예를 들어 stdout
및 stderr
과 같은 유형이 FILE*
인 여러 글로벌 변수가 있습니다. 따라서 가장 왼쪽에있는 restrict
은 이들 중 아무 것도 반환 할 수 없다는 것을 명확하게 나타내며, 반환 된 FILE*
은 다른 별칭과 별칭이 아닙니다. 두 번째 restrict
은 동일한 보증을하지만 한 수준 높습니다.이 함수에 &stderr
과 같은 것을 전달할 수 없습니다. (음, stderr
은 반드시 일반적인 의미의 변수는 아니지만 그림을보기를 바랍니다.)
이 답변을 주셔서 감사합니다 Jens. 지금은 이해. – md5
+1 머리를 쪼개기위한 것 : P –
글쎄, 이전에 생성 된 파일을 반환하는 기능을 금지합니다. tmpfile()이해야 할 일은 무엇일까? 이제는 돌을 던져라. –