3
\$\begingroup\$

Been trying to get this to compile but keep getting the following error:

/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/include/stdlib.h:111: error: expected unqualified-id before 'int'
/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/include/stdlib.h:111: error: expected `)' before 'int'
/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/include/stdlib.h:111: error: expected `)' before 'int'
 // Receiver Code
#include <ServoTimer2.h>
ServoTimer2 servosteer; // create servo object to control a servo 
ServoTimer2 servospeed; // create servo object to control a servo 
//MEGA pin 23 receive pin - displays characters sent by RF
#include <VirtualWire.h>
#undef int
#undef abs
#undef double
#undef float
#undef round
void setup()
{
 servosteer.attach(3); // attaches the servo on pin 25 to the servo object 
 servospeed.attach(4); // attaches the servo on pin 27 to the servo object 
 // lcd.init();
 Serial.begin(9600); // Debugging only
 Serial.println("setup");
 // Initialise the IO and ISR
 vw_set_ptt_inverted(true); // Required for DR3100
 vw_setup(4000); // Bits per sec
 vw_set_rx_pin(8);
 vw_rx_start(); // Start the receiver PLL running
}
void loop()
{
 uint8_t buf[VW_MAX_MESSAGE_LEN];
 uint8_t buflen = VW_MAX_MESSAGE_LEN;
 if (vw_get_message(buf, &buflen)) // Non-blocking
 {
 //invalid message length must be S/B/F/L/R + number (max 3 digits)
 if (buflen < 3 || buflen > 5)
 return;
 digitalWrite(13, true); // Flash a light to show transmitting
 char val[buflen]; //Same as buf, last char will be used for null terminator
 memset(val, '0円', sizeof(val));
 //Copy value from string i.e. 213 from R213 into separate string
 strncpy(val, (char *)buf + 1, buflen - 1);
 //convert string containing value to integer e.g. "213" to 213.
 int VAL = atoi ( val );
 switch (buf[0]) {
 case 'X': //Deadmans finger stop all
 Serial.print("Deadmans finger");
 servospeed.write(1500);
 break;
 case 'P':
 Serial.print("Pitch ");
 Serial.println(VAL);
 servospeed.write(544+VAL*10);
 break;
 case 'R':
 Serial.print("Roll ");
 Serial.println(VAL);
 servosteer.write(544+VAL*10);
 break;
 default:
 break;
 }
 }
 digitalWrite(13, false); // Flash a light to show transmitting
}
Toby Jaffey
29k19 gold badges99 silver badges151 bronze badges
asked Jul 3, 2010 at 12:08
\$\endgroup\$
3
  • \$\begingroup\$ In Arduinos, do you have to specify the product number in a pound define or is that a setting in the software? \$\endgroup\$ Commented Jul 3, 2010 at 12:42
  • \$\begingroup\$ is this code an exact paste from your arduino editor? \$\endgroup\$ Commented Jul 3, 2010 at 14:37
  • \$\begingroup\$ @Kellenjb: the Arduino IDE has a menu setting (Tools;Board) for that, which doesn't seem to insert anything into the edit window. \$\endgroup\$ Commented Jul 3, 2010 at 15:24

2 Answers 2

4
\$\begingroup\$

If you look carefully at the error messages, the compiler is complaining about line 111 in the stdlib.h file. Since you didn't explicitly #include <stdlib.h>, it seems likely that the compiler is implicitly including it at some point after all those unusual #undef statements.

If you have to keep the #undefs, you could try putting an explicit #include <stdlib.h> at the very top of the file.

answered Jul 3, 2010 at 15:11
\$\endgroup\$
2
\$\begingroup\$

This whole block looks suspect.

#undef int
#undef abs
#undef double
#undef float
#undef round

What error messages do you get if you remove that?

answered Jul 3, 2010 at 12:13
\$\endgroup\$
3
  • \$\begingroup\$ This is a perfectly good attempt at an answer, but I do not understand why it was accepted as the correct answer if it did not fix his problem. \$\endgroup\$ Commented Jul 3, 2010 at 12:43
  • \$\begingroup\$ I agree, please remove the "correct answer" tick until someone solves your problems. \$\endgroup\$ Commented Jul 3, 2010 at 12:45
  • \$\begingroup\$ As a note to Alex, If you accept someones answer, you are telling everyone that your question has been answered and that you don't really need any more responses. \$\endgroup\$ Commented Jul 3, 2010 at 12:48

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.