Kil’jaeden
Soy nuevo en C ++, así que no sé qué significan con este error en un ejemplo de código phidget:
Main.cpp:8:16: error: ID no calificado esperado antes de la constante numérica
//verander de volgende informatie naar de informatie voor jouw database
#define dserver "oege.ie.hva.nl"
#define duser "username"
#define dpassword "password"
#define ddatabase "databasename"
#define homeid 1234 //line 8
¿Hay un error de sintaxis? ¿O algo mas? Uso #define en lugar de int.
EDITAR: se agregó el registro de errores completo.
registro de errores completo: http://pastebin.com/3vtbzmXD
Código completo main.cpp: http://pastebin.com/SDTz8vni
mike seymour
El error completo es
error: expected unqualified-id before numeric constant
note: in expansion of macro ‘homeid’
string homeid;
^
Está intentando declarar una variable con el mismo nombre que una macro, pero eso no se puede hacer. El preprocesador ya pisoteó el programa, convirtiéndolo en string 1234;
, que no es una declaración válida. El preprocesador no tiene conocimiento de la estructura del programa y las macros no siguen las reglas de alcance del lenguaje.
Siempre que sea posible, use funciones de lenguaje como constantes y funciones en línea en lugar de macros. En este caso, podrías usar
const int homeid = 1234;
Esto tendrá un alcance en el espacio de nombres global y puede ocultarse de manera segura por algo con el mismo nombre en un alcance más limitado. Incluso cuando está oculto, siempre está disponible como ::homeid
.
Cuando realmente necesita una macro, es aconsejable seguir la convención de usar SHOUTY_CAPS
para macros Además de llamar la atención sobre los peligros potenciales y las rarezas asociadas con el uso de macros, no chocará con ningún nombre que utilice otras mayúsculas.
-
Tengo muchos menos errores ahora, pero ahora tengo uno nuevo que es este: error: inicializador esperado antes de la constante numérica const int homeid 1234
– Kil’jaeden
17 de diciembre de 2014 a las 12:06
-
@Kil’jaeden: Te perdiste la
=
entre el nombre de la variable y el inicializador.–Mike Seymour
17 de diciembre de 2014 a las 12:07
-
Gracias, eso lo arregló… Tengo otro error, pero eso no tiene que ver con esto.
– Kil’jaeden
17 de diciembre de 2014 a las 12:11
-
Obtuve este error cuando las personas usaban cosas como “CONST” como parte de su nombre, pero el archivo windows.h lo reemplazaba con una macro.
#undef
se deshizo de él… raro…– rogerdpack
11 de enero de 2019 a las 14:55
Esa línea está bien.
Lo más probable es que el compilador no se queje de la definición de la macro en sí, sino de la usar de la macro Ejemplo:
#define homeid 1234
void homeid() {
}
Al compilar esto con GCC, obtengo:
so.cc:1:16: error: expected unqualified-id before numeric constant #define homeid 1234 ^ so.cc:3:6: note: in expansion of macro ‘homeid’ void homeid() { ^
Esto le dice que la constante numérica que provoca la queja es parte de la definición de macro, pero también que esa macro es usado (en este caso, aparentemente por accidente) en la línea 3. Observe de dónde proviene la expansión macro en su código.
miguel tomás
Este error también ocurre cuando la constante numérica definida también se declara en otra parte del código. Por ejemplo, declarado como a continuación y llamado fuera de cualquier clase o función.
#define MODEL_SELECT_PLOWMAN
....
MODEL_SELECT_PLOWMAN
void someFunc(){
...
}
en este caso particular, #define homeid 1234
se declara correctamente sin embargo homeid
es muy probable que esté fuera de lugar y repetido dentro del código (y sin #define
)
Tendrás que mostrar más de
Main.cpp
.–Joseph Mansfield
17 dic 2014 a las 11:40
preferir
const int homeid = 1234;
encimadefine
.– Jarod42
17 de diciembre de 2014 a las 11:41
Tengo curiosidad por saber qué hay en las líneas 1..7
– WhozCraig
17 de diciembre de 2014 a las 11:43
@JosephMansfield Es posible que esté pensando en compiladores de C preestándar, que no siempre lo admitieron, pero el primer estándar de C y el primer estándar de C ++ lo permiten.
– usuario743382
17 de diciembre de 2014 a las 11:44
Ahora sólo tiene que proporcionar la completo y no modificado salida de error
– Un tipo programador
17 dic 2014 a las 11:50