2010-03-02 15 views
13

Al compilar un código de trabajo en Fedora 11, que estoy recibiendo este error:va_list no ha sido declarado

/usr/include/c++/4.4.1/cstdarg:56: error: ‘::va_list’ has not been declared 

estoy usando:

[[email protected] VTK]$ g++ --version 
g++ (GCC) 4.4.1 20090725 (Red Hat 4.4.1-2) 

¿Alguien sabe cuál es el problema podría ser?

+1

Tenemos una etiqueta 'telépata-needed'? – Maulrus

+1

@Maulrus: No más, no lo hacemos. (Estaría implícito en casi todas las preguntas de bajo puntaje si lo tuviéramos de verdad ...) –

+0

Hola David Me encontré con el mismo problema en Ubuntu 9.10. Usando GCC 4.4.1 ¿Resolvió esto? Si es así, por favor, ayúdenme. Gracias Vinit –

Respuesta

3

Traer en el conjunto de macro varadica en g ++ 4.4 tiene una semántica confusa y retorcida. Puede obtener una mejor idea de lo que no está sucediendo al usar g++ -E broken_code.cpp y ver lo que trae el preprocesador. Hay unas pocas docenas de directivas de preprocesador GNU C que podrían evitar que la declaración ::va_list se compile como __gnuc_va_list, que a su vez es de escriba __builtin_va_list

el código de chatarra:

$cat junk.cpp 
#include <cstdarg> 

void foo(char *f, ...) { va_list va; va_start(va, va); } 
int main(void) { foo("", "", ""); return 0; } 
$ g++ junk.cpp 
$ g++ --version 
g++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1 

compila y enlaces (con advertencias) con la salida correspondiente de g++ -E junk.cpp ser:

# 40 "/usr/lib/gcc/i486-linux-gnu/4.4.1/include/stdarg.h" 3 4 
typedef __builtin_va_list __gnuc_va_list; 
# 102 "/usr/lib/gcc/i486-linux-gnu/4.4.1/include/stdarg.h" 3 4 
typedef __gnuc_va_list va_list; 
# 45 "/usr/include/c++/4.4/cstdarg" 2 3 
# 54 "/usr/include/c++/4.4/cstdarg" 3 
namespace std __attribute__ ((__visibility__ ("default"))) { 

    using ::va_list; 

} 
31

que tenía el mismo mensaje de error y he resuelto que incluye uno de los siguientes archivos

#include <stdarg.h> 

o

#include <cstdarg> 
Cuestiones relacionadas