Agregar un int global corrompe el código compilado

-2

Tengo un problema extraño. Quiero incrementar un valor cada vez que se llama a la función de bucle o un valor aleatorio cada vez. Si uso un int global para incrementar o establecer un int local en un valor aleatorio, obtengo un fallo extraño. El código se compila bien, pero el tamaño es mucho mayor que el tamaño compilado si defino y establezco un valor estático en la función de bucle. No solo aumenta el tamaño compilado en 2 KB entre las dos situaciones, sino que la ejecución parece actuar de forma errática.

Ejemplos.

Esto funciona

    /********************************************/
    ...
    void setup( void )
    ...
    void loop( void ) {
        int a = 0;
    }
    /********************************************/

Esto no lo hace

    /********************************************/
    int a;
    ...
    void setup( void )
    ...
    void loop( void ) {
        a = 0;
    }
    /********************************************/

Tampoco esto

    /********************************************/
    ...
    void setup( void )
    ...
    void loop( void ) {
        int a = random( 10 );
    }
    /********************************************/

Me encantaría ver si alguien pudiera explicar por qué esto está actuando de manera tan extraña.

Avísame si quieres más ejemplos de código

    
pregunta jeffminton

1 respuesta

1

Parece que su enlazador no está configurado correctamente. La asignación para el global estará en la RAM no utilizada, mientras que el local estará en la pila. Supongo que su enlazador está configurado para superponer la RAM no utilizada con otra cosa que cause los efectos que ve.

    
respondido por el Jason Morgan

Lea otras preguntas en las etiquetas