반응형
C는 이니셜 라이저에서 [N… M]은 무엇을 의미하고 있습니까?
에서 sys.c의 라인 123 :
void *sys_call_table[__NR_syscalls] =
{
[0 ... __NR_syscalls-1] = sys_ni_syscall,
#include <asm/unistd.h>
};
sys_call_table
배열에 대한 일반적인 포인터입니다. 그러나 표기법은 무엇입니까?
[0 ... __NR_syscalls-1]
무엇입니까 ...
?
편집 :
내가 여기에 또 다른 C 트릭을 배웠의 #include <asm/unistd.h>
됩니다 전처리 및 그 내용으로 대체하고 할당 [0 ... _NR_syscalls-1]
.
범위 기반 초기화는 gnu gcc입니다.
요소 범위를 동일한 값으로 초기화 한 것
[first ... last] = value
입니다. 이 GNU 확장입니다. 예를 들면int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };
아닙니다. 와 -pedantic
함께 컴파일 하면 그렇게 말합니다.
어떻게 작동 작동합니까?
전처리 기는 범위 기반 구조에서 #include <asm/unistd.h>
실제 내용 ( 기타 기호 상수 및 유형을 정의하고 기타 함수를 선언 )으로 대체 한 다음 포인터 배열을 초기화하는 데 추가로 사용됩니다.
참고 URL : https://stackoverflow.com/questions/10071304/what-does-nm-mean-in-c-aggregate-initializers
반응형
'IT' 카테고리의 다른 글
JSON 값에 여러 줄 다수가 있습니까? (0) | 2020.08.18 |
---|---|
주어진 쿠폰에서 가장 긴 회문을 반환하는 함수 작성 (0) | 2020.08.18 |
arrayfun은 matlab의 명시 적 루프보다 훨씬 느릴 수 있습니다. (0) | 2020.08.18 |
Scala의 "flatmap that s ***"관용적 표현은 어디에서 왔습니까? (0) | 2020.08.16 |
Asp.Net MVC에서 "홈페이지"설정 (0) | 2020.08.16 |