Cómo resolver errores de sintaxis
Esta etiqueta provocó un error de sintaxis.
Para determinar la causa, examine no solo la línea que aparece en el mensaje de error, sino también las líneas que se encuentran encima de ella. El siguiente ejemplo genera un mensaje de error para la línea que contiene la llave de apertura, mientras que la causa real del error aparece encima de la línea.
// C2059a.cpp
int main )// C2059 no tiene corchete de apertura.
{
}
Si al examinar la línea no se revela ninguna pista de que algo haya salido mal, intente comentar la línea que aparece en el mensaje de error como así como la línea posibles líneas arriba.
Si el mensaje de error aparece en un símbolo inmediatamente después de una variable typedef, verifique si la variable está definida en el código fuente.
Puede obtener C2059 si el símbolo no se evalúa como nada (lo que puede ser el caso al compilar con /Dsymbol=).
// C2059b.cpp
// Utilice /DTEST= para compilar:
#include
int main () p>
int main ()
p>
{
#ifdef PRUEBA
printf("\nPRUEBA definida %d", PRUEBA ); // C2059
#else
p>
printf("\nPRUEBA no definida"); p>}
Otra razón específica por la que puede recibir un C2059 es Compila una aplicación que especifica una estructura en el argumento predeterminado de la función. El valor predeterminado del parámetro debe ser una expresión. Las listas de inicializadores (como las que se utilizan para inicializar una estructura) no son expresiones. El siguiente ejemplo genera C2059:
// C2059c.cpp
struct ag_type
{
int a; p>float b;
};
void func(ag_type arg = {5, 7.0}) ; // C2059
La solución es definir un función constructora para realizar la inicialización requerida.
struct ag_type {
int a
flotante b;
ag_type(int aa, float bb): a(aa) , b(bb) {}
};
void func(ag_type arg = ag_ type(5, 7.0));
int main()
{
}
También es posible obtener C2059 si define una clase de plantilla miembro o una función fuera de la clase. Para obtener más información, consulte el artículo Q241949 de la base de conocimientos.
Reimpreso de:. . . .