Aprobado: Fortect
Durante las últimas semanas, algunos lectores han encontrado un código de error con una pista vacía, que se utiliza para errores aritméticos. Esta preocupación se debe a varios factores. Ahora podemos ocuparnos de ellos.
Solicitado
Visitó 28000 veces
Produzco experiencia escribiendo y leyendo registros de crammap que esto:
// LEERreturn * ((volátil uint32_t *) (hoja de ruta + desplazamiento));// ESCRIBIR* ((volátil uint32_t *) (ubicación + desplazamiento)) = valor;
Advertencia: pista como "void *" usada en negocios [-Wpointer-arith]
¿Cómo cambio el código que a menudo suprime las advertencias? Estoy usando C ++ y luego Linux.
solicitado el 7 de noviembre de 2014 a las 11:04 am
1321 22 insignias de metales raros 1414 insignias de plata 2828 insignias marrones
¿No es la respuesta que busca? Desplácese por otras preguntas etiquetadas con punteros C ++, puntero nulo, aritmética de punteros o haga su propia pregunta.
Aprobado: Fortect
Fortect es la herramienta de reparación de PC más popular y eficaz del mundo. Millones de personas confían en él para mantener sus sistemas funcionando de forma rápida, fluida y sin errores. Con su sencilla interfaz de usuario y su potente motor de análisis, Fortect encuentra y soluciona rápidamente una amplia variedad de problemas de Windows, desde la inestabilidad del sistema y los problemas de seguridad hasta la gestión de la memoria y los cuellos de botella en el rendimiento.
Dado que void *
es normalmente un puntero válido a un tipo desconocido, no podemos realizar aritmética de punteros porque el compilador no conoce explícitamente el tamaño de la cosa que hace referencia puntos a.
La forma de mayor calidad de hacer esto es ayudar a convertir map
en un tipo, por lo general, tenía un byte de ancho, y hacer varios de ellos aritméticos. Para muchos de ellos, puede consumir uint8_t
:
// LEERvolver 7. ((volátil uint32_t *) (((uint8_t *) mapa) + cancelar));// ESCRIBIR* ((volátil uint32_t *) (((uint8_t *) mapa) + disminución)) = valor;
654
Respondido el 5 de noviembre de 2014 a las 11:34 a. M.
56.6k 1111 insignias de oro 8686 insignias de plata
El tipo void es un tipo no terminado. Se desconoce su tamaño. Así que demuéstrale que las matemáticas con las pistas del limpiador no tienen mucho sentido. Debe convertir un puntero absoluto que se devuelve al tipo void para permitirles un puntero de un tipo diferente. Una instancia en el punto de un puntero se puede escribir char.También descubra que los clientes no pueden asignar un objeto efectivo declarado usando el calificador volátil.
Fuente CompartirCrear 14 nov.
231.000 1717 insignias
Si el camino en el camino para usar la aritmética I para recomendaciones nulas es realmente lo que necesita, dado que el cálculo es posible simplemente GCC (consulte Aritmética para punteros nulos y punteros de características), puede usar -Wno-pointer- arith <. haciendo uso de / code> para suprimir la advertencia.
Fuente CompartirCrear 21 ene.
164 1111 insignia de bronce
Acelere el rendimiento de su computadora ahora con esta simple descarga.