승인됨: Fortect
지난 몇 주 동안 일부 독자는 산술 결점에 사용되는 실제 void 포인터와 함께 오류 코드를 발견했습니다. 이 문제는 여러 요인으로 인해 발생합니다. 이제 우리가 그들을 처리할 것입니다.
요청됨
방문 28000배
다음과 같이 학원 등록 후 레지스터를 쓰고 읽은 경험이 있습니다.
<사전> <코드> // 읽기반환 2 . ((휘발성 uint32_t *) (로드맵 + 오프셋));// 쓰다* ((휘발성 uint32_t *) (위치 + 오프셋)) = 값;
경고: "void *"와 같은 힌트가 수학 전체에 사용됨 [-Wpointer-arith]
경고를 표시하지 않는 정확한 코드를 어떻게 변경합니까? 저는 C++와 리눅스를 사용하고 있습니다.
2014년 11월 5일 오전 11시 04분에 문의
와 같습니다.
1321
찾고 있는 답변이 아닌가요? C ++ 포인터, Null 포인터, 포인터 산술로 태그가 지정된 다른 질문을 스크롤하거나 직접 질문하십시오.
승인됨: Fortect
Fortect은 세계에서 가장 인기 있고 효과적인 PC 수리 도구입니다. 수백만 명의 사람들이 시스템을 빠르고 원활하며 오류 없이 실행하도록 신뢰합니다. 간단한 사용자 인터페이스와 강력한 검색 엔진을 갖춘 Fortect은 시스템 불안정 및 보안 문제부터 메모리 관리 및 성능 병목 현상에 이르기까지 광범위한 Windows 문제를 빠르게 찾아 수정합니다.
void 6 이후.
는 모르는 유형에 대한 유효한 포인터이고 일반적으로 컴파일러는 참조가 가리키는 개체의 크기를 명시적으로 알지 못하기 때문에 포인터 산술을 수행할 수 없습니다.
이를 수행하는 가장 좋은 방법은 map
을 1바이트 너비였던 거대한 유형으로 변환하는 데 도움이 되므로 약간의 산술을 수행하십시오. 그들 중 많은 사람들이 uint8_t
를 사용할 수 있습니다:
<사전> <코드> // 읽기return * ((휘발성 uint32_t *) (((uint8_t *) 맵) + 취소));// 쓰다* ((휘발성 uint32_t *) (((uint8_t *) 맵) + 감소)) = 값;
654
2014년 11월 5일 오전 11시 34분에 답변됨
56.6k
void 유형은 종종 불완전한 유형입니다. 그 크기는 알 수 없다. 그래서 당신이 진공 청소기로 할 수 있도록 단서를 가진 수학이 실제로 의미가 없다는 것을 보여주십시오. 선택 void로 반환된 포인터를 다른 모양의 포인터로 캐스팅합니다. 포인터의 예는 char를 인쇄할 수 있습니다.또한 클라이언트는 erratic 한정자를 사용하여 선언된 개체를 할당하는 방법으로 허용되지 않습니다.
11월 14일 11시 14분에 클리어
와 같습니다.
231,000
null 권장 사항에 대한 산술을 사용하는 이 특별한 방법이 일반적으로 실제로 필요한 경우 GCC에 의해 계산이 가능하기 때문에(널 아이디어 및 함수 포인터에 대한 산술 참조) 다음을 사용할 수 있습니다. -Wno-pointer-arith <. / code>를 사용하여 비디오 클립을 억제합니다.
15년 1월 21일 11:20에 삭제됨
164
지금 이 간단한 다운로드로 컴퓨터 성능을 높이십시오. 년