source

[N...]이란?C 집약 이니셜라이저의 M > 평균?

goodcode 2022. 8. 11. 22:19
반응형

[N...]이란?C 집약 이니셜라이저의 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].

이것은 Designated Initializer를 사용한 초기화입니다.

범위 기반 초기화는 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-n-m-mean-in-c-aggregate-initializers

반응형