Resultados de la búsqueda a petición "strict-aliasing"

2 la respuesta

¿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 ...

2 la respuesta

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 ...

2 la respuesta

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 ...

3 la respuesta

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, ...

2 la respuesta

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 ...

2 la respuesta

¿Esta unión rompe el aliasing estricto? ¿Qué pasa con los registros de punto flotante?

8 la respuesta

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 ...

5 la respuesta

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 ...

3 la respuesta

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 ...

4 la respuesta

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 { ...