주소로 처리되는 정수 리터럴을 역 참조하려면 이식성/유효합니까?C에서 정수식 포인터 리터럴을 역 참조 할 때 유효합니다.
*(uint64_t *)(0x12345678) = 123ULL;
난 (gcc -std=c89 -Wall input.c
통해 테스트)에는 컴파일러 경고가 표시되지 : I가 123
에 메모리 어드레스 0x12345678
에 64 비트 값을 설정할 경우, 즉, 적어도 C89 표준에 의해 다음과 같은 휴대용 및 유효한 C이다 ,하지만이 주제에 대한 질문은 정수형 리터럴 (포인터 주소로 변환 됨)을 직접적으로 참조 해제하는 대신 중간 변수에 주소를 저장하는 경우가 있습니다.
휴대용을 무엇이라고합니까? 필자가 이런 식으로 한 유일한 시간은 임베디드 시스템을 프로그래밍 할 때 내가 그 주소에서 무엇을 찾을 수 있는지입니다. 그 외에는 이식성이 없습니다. – DeiDei