2012-08-09 17 views
5

He define mediante typedef en mi código comoen conflicto declaración

typdef unsigned int size_t; 

que está en conflicto con la stddef

typedef __SIZE_TYPE__ size_t; 

estoy seguro de cómo evitar esto pero quiere mantener size_t en mi código.

+3

Elija una nombre diferente o ponerlo en un espacio de nombres. – jrok

+2

Simplemente elige un nombre diferente. –

+2

Elija un nombre diferente. –

Respuesta

17

Dos tres opciones:

1) elegir un nombre diferente, creo que ya tiene eso.

2) Utilizar un namespace:

namespace X 
{ 
    typedef long size_t; 
} 

y el tipo como

X::size_t x; 

3) Feo, con garantía de que te despidan, y me downvoted:

typedef unsigned int my_size_t; 
#define size_t my_size_t 
+0

AHH. Me gusta tu respuesta mejor. El problema es que esto es para un proyecto y el tamaño type_t typedef en mi código es algo que no puedo cambiar. ¡Gracias! – user1496542

+0

@ user1496542 ok, vea la respuesta editada. –

+0

jajaja bien. la respuesta del espacio de nombres todavía gana para mí, pero gracias de nuevo! :) – user1496542

2

Probablemente sea una mala idea intentar redefinir un tipo que está en uno de los encabezados estándar. ¿Qué está tratando de lograr? ¿Por qué no quieres usar la definición standard size_t?

+0

Esto debería ser un comentario que dice "Elige un nombre diferente". : P – jrok

+0

LOL, tienes razón, esa parece ser la dirección que la gente ha tomado. – jwismar

+0

Lo haría si pudiera, pero esto es para un proyecto que no puedo cambiar ese nombre. Gracias por las sugerencias :) – user1496542