i'm making a project and i came across the follwing error. Whan i'm trying to compile and upload the code i'm getting those errors:
ShiftRegisterTest1.ino:In function 'int* return_pins(int)'
displays.ino:9: error: expected primary-expression before '{' token
displays.ino:9: error: expected `;' before '{' token
displays.ino:12: error: expected primary-expression before '{' token
displays.ino:12: error: expected `;' before '{' token
displays.ino:15: error: expected primary-expression before '{' token
displays.ino:15: error: expected `;' before '{' token
displays.ino:18: error: expected primary-expression before '{' token
displays.ino:18: error: expected `;' before '{' token
displays.ino:21: error: expected primary-expression before '{' token
displays.ino:21: error: expected `;' before '{' token
displays.ino:24: error: expected primary-expression before '{' token
displays.ino:24: error: expected `;' before '{' token
displays.ino:27: error: expected primary-expression before '{' token
displays.ino:27: error: expected `;' before '{' token
displays.ino:30: error: expected primary-expression before '{' token
displays.ino:30: error: expected `;' before '{' token
displays.ino:33: error: expected primary-expression before '{' token
displays.ino:33: error: expected `;' before '{' token
displays.ino:36: error: expected primary-expression before '{' token
displays.ino:36: error: expected `;' before '{' token
displays.ino:39: error: expected primary-expression before '{' token
displays.ino:39: error: expected `;' before '{' token
displays.ino:42: error: expected primary-expression before '{' token
displays.ino:42: error: expected `;' before '{' token
displays.ino:45: error: expected primary-expression before '{' token
displays.ino:45: error: expected `;' before '{' token
displays.ino:48: error: expected primary-expression before '{' token
displays.ino:48: error: expected `;' before '{' token
displays.ino:51: error: expected primary-expression before '{' token
displays.ino:51: error: expected `;' before '{' token
displays.ino:56: error: expected primary-expression before '{' token
displays.ino:56: error: expected `;' before '{' token
Error compiling
I don't really understand why since the code (see below) should be working.
int * return_pins(int get_number)
{
static int rp[8];
switch(get_number)
{
//DP, A, B, C, D, E, F, G
case 48: //0
rp[8] = {0, 1, 1, 1, 1, 1, 1, 0};
break;
case 49: //1
rp[8] = {0, 0, 1, 1, 0, 0, 0, 0};
break;
case 50: //2
rp[8] = {0, 1, 1, 0, 1, 1, 0, 1};
break;
case 51: //3
rp[8] = {0, 1, 1, 1, 1, 0, 0, 1};
break;
case 52: //4
rp[8] = {0, 0, 1, 1, 0, 0, 1, 1};
break;
case 53: //5
rp[8] = {0, 1, 0, 1, 1, 0, 1, 1};
break;
case 54: //6
rp[8] = {0, 1, 0, 1, 1, 0, 1, 1};
break;
case 55: //7
rp[8] = {0, 1, 1, 1, 0, 0, 0, 0};
break;
case 56: //8
rp[8] = {0, 1, 1, 1, 1, 1, 1, 1};
break;
case 57: //9
rp[8] = {0, 1, 1, 1, 1, 0, 1, 1};
break;
case 65: //A
rp[8] = {0, 1, 1, 1, 0, 1, 1, 1};
break;
case 70: //F
rp[8] = {0, 1, 0, 0, 0, 1, 1, 1};
break;
case 69: //E
rp[8] = {0, 1, 0, 0, 1, 1, 1, 1};
break;
case 80: //P
rp[8] = {0, 1, 1, 0, 0, 1, 1, 1};
break;
case 72: //H
rp[8] = {0, 0, 1, 1, 0, 1, 1, 0};
break;
//DP, A, B, C, D, E, F, G
case 45: //-
default:
rp[8] = {0, 0, 0, 0, 0, 0, 0, 1};
break;
}
return rp;
}
What this code does is to basicaly get an int
ad input and based on this number it returns an int array
. It's a very simple code which is called inside the loop()
method which is located on an other file.
Also i'm using Atmel Studio 6 instead of the original Arduino IDE but i dont think it has to do something with the problem :/
3 Answers 3
What you try here:
rp[8] = {0, 1, 1, 1, 1, 1, 1, 0};
is only valid in C++11. (Before that you can initialize an array like this only upon initialization.)
Besides, as pointed out by Pete Becker, you need to declare rp
as an array rather than a single int
.
-
And what if i want to change the values of the array?Meletis Flevarakis– Meletis Flevarakis2015年04月19日 21:01:40 +00:00Commented Apr 19, 2015 at 21:01
-
1This isn't valid at all.
rp[8]
is anint
.Pete Becker– Pete Becker2015年04月19日 23:29:01 +00:00Commented Apr 19, 2015 at 23:29 -
Oh. And that. :)fuenfundachtzig– fuenfundachtzig2015年04月20日 05:54:23 +00:00Commented Apr 20, 2015 at 5:54
As fuenfundachtzig
said this cannot be done in this version of C++ Arduino uses. A replacement for this method is to set the number for each place.
For example:
case 48:
//rp[8] = {0, 1, 1, 1, 1, 1, 1, 0};
rp[0] = 0;
rp[1] = 1;
rp[2] = 1;
rp[3] = 1;
rp[4] = 1;
rp[5] = 1;
rp[6] = 1;
rp[7] = 0;
break;
This works the same however it takes more space but i dont this there is a problem.
Have you tried compiling without the "static" keyword. I think the compiler is complaining because it sees multiple statements trying to make an assignment to a static variable. Even if your logic is such that only one of the assignments will ever be executed the compiler doesn't know that.