Resultados de la búsqueda a petición "strict-aliasing"
¿Puede un objeto tener más de un tipo efectivo?
Considere el siguiente código en una plataforma donde el ABI no inserta relleno en las uniones: union { int xi; } x; x.xi = 1;Creo que la segunda línea exhibe un comportamiento indefinido ya que viola la estricta regla de alias: El objeto al ...
Regla de alias estricto de C ++: ¿la exención de alias 'char' es una calle de 2 vías?
Hace solo un par de semanas, supe que el estándar C ++ tenía una estricta regla de alias. Básicamente, hice una pregunta sobre el cambio de bits, en lugar de cambiar cada byte de uno en uno, para maximizar el rendimiento con el que quería cargar ...
OO Polimorfismo en C, ¿problemas de alias?
Un colega y yo estamos tratando de lograr una jerarquía de clases polimórfica simple. Estamos trabajando en un sistema embebido y estamos restringidos a usar solo un compilador de C. Tenemos una idea de diseño básica que se compila ...
gcc: Cómo usar __attribute ((__ may_alias__)) correctamente para evitar la advertencia de "desdibujar puntero de tipo punteado"
Tengo un código que utiliza la escritura de tipos para evitar tener que llamar al constructor y destructor de un "objeto" miembro a menos que sea necesario hasta que sea realmente necesario usar el objeto. Funciona bien, pero en g ++ 4.4.3, ...
Es una violación de alias estricta alias una estructura como su primer miembro?
Código de muestra struct S { int x; }; int func() { S s{2}; return (int &)s; // Equivalent to *reinterpret_cast<int *>(&s) } Creo que esto es común y se considera aceptable. El estándar garantiza que no hay relleno inicial en la estructura. Sin ...
aliasing estricto y alineación
Necesito una forma segura de alias entre tipos de POD arbitrarios, conforme a ISO-C ++ 11 considerando explícitamente 3.10 / 10 y 3.11 de n3242 o posterior. Aquí hay muchas preguntas sobre alias estricto, la mayoría de ellas con respecto a C y ...
Advertencia de “desreferenciar el puntero marcado con tipo romperá las reglas de alias estricto”
Yo uso un código donde lanzo una enumeración * a int *. Algo como esto: enum foo { ... } ... foo foobar; int *pi = reinterpret_cast<int*>(&foobar);Al compilar el código (g ++ 4.1.2), recibo el siguiente mensaje de advertencia: dereferencing ...
Desreferenciar el puntero de tipo punteado romperá las reglas de alias estricto
Usé el siguiente código para leer datos de archivos como parte de un programa más grande. double data_read(FILE *stream,int code) { char data[8]; switch(code) { case 0x08: return (unsigned char)fgetc(stream); case 0x09: return ...
Escriba puntear una estructura en C y C ++ a través de una unión
He compilado esto en gcc y g ++ con pedante y no recibo ninguna advertencia en ninguno de los dos: #include <stdio.h> #include <stdlib.h> #include <string.h> struct a { struct a *next; int i; }; struct b { struct b *next; int i; }; struct c { ...