Bug in online compiler

11 Dec 2012

Hi:

The following code could not be compiled.

#include "mbed.h"
DigitalOut myled1(LED1); // This is led 1
DigitalOut myled2(LED2); /* This is led 2 */
DigitalOut myled3(LED3);
DigitalOut myled4(LED4);

myled1 = myled2 = myled3 = myled4 = 0;

int main() {
    while(1) {
        myled1 = 1; wait(0.2); myled1 = 0; wait(0.2);
        myled2 = 1; wait(0.2); myled2 = 0; wait(0.2);
        myled3 = 1; wait(0.2); myled3 = 0; wait(0.2);
        myled4 = 1; wait(0.2); myled4 = 0; wait(0.2);
     }
}

However, the following code is okay

#include "mbed.h"
DigitalOut myled1(LED1); // This is led 1
DigitalOut myled2(LED2); /* This is led 2 */
DigitalOut myled3(LED3);
DigitalOut myled4(LED4);

int main() {
    myled1 = myled2 = myled3 = myled4 = 0;
    while(1) {
        myled1 = 1; wait(0.2); myled1 = 0; wait(0.2);
        myled2 = 1; wait(0.2); myled2 = 0; wait(0.2);
        myled3 = 1; wait(0.2); myled3 = 0; wait(0.2);
        myled4 = 1; wait(0.2); myled4 = 0; wait(0.2);
     }
}
11 Dec 2012

This would be correct.

The first example, you are doing an assignment outside of any function. I think what you have seen previously is a global variable definition being given an initial value, e.g.:

int a=0;

So no bug, just wrong coding!

Andy

11 Dec 2012

Getting old. Thank.