Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C compile errors: stray '\200' in program and expected ')' before numeric constant

Tags:

c++

c

I copied this program and am having trouble with the void downFrequency function (I think).

This is for Arduino Uno. Here are the compiler errors:

Compiling 'MY_dds' for 'Arduino Uno'

MY_dds.ino : stray '\342' in program
MY_dds.ino : stray '\200' in program
MY_dds.ino : stray '\223' in program
MY_dds.ino : stray '\342' in program
MY_dds.ino : stray '\200' in program
MY_dds.ino : stray '\223' in program
MY_dds.ino : stray '\342' in program
MY_dds.ino : stray '\200' in program
MY_dds.ino : stray '\223' in program
MY_dds.ino : stray '\342' in program
MY_dds.ino : stray '\200' in program
MY_dds.ino : stray '\223' in program
MY_dds.ino : stray '\342' in program
MY_dds.ino : stray '\200' in program
MY_dds.ino : stray '\223' in program
MY_dds.ino : stray '\342' in program
MY_dds.ino : stray '\200' in program
MY_dds.ino : stray '\223' in program
MY_dds.ino : stray '\342' in program
MY_dds.ino : stray '\200' in program
MY_dds.ino : stray '\223' in program
MY_dds.ino : stray '\342' in program
MY_dds.ino : stray '\200' in program
MY_dds.ino : stray '\223' in program
MY_dds.ino : stray '\342' in program
MY_dds.ino : stray '\200' in program
MY_dds.ino : stray '\223' in program
MY_dds.ino : : In function 'void downFrequency()':
MY_dds.ino : expected `)' before numeric constant
MY_dds.ino : expected `)' before numeric constant
MY_dds.ino : expected `)' before numeric constant
MY_dds.ino : expected `)' before numeric constant
MY_dds.ino : expected `)' before numeric constant
MY_dds.ino : expected `)' before numeric constant
MY_dds.ino : expected `)' before numeric constant
MY_dds.ino : expected `)' before numeric constant
Error compiling

Here is the program:

#include <stdio.h>
#include <dds.h>
#include <LiquidCrystal.h>

#define RESET 13
#define data_pin 12
#define load_pin A5
#define clock_pin A4
#define clock_hz 120000000LL
#define calibrationValue -0.0400000 // This is a value we change to calibrate
                                    // our particular chip more accurately
#define buttonPin A0

// chip, data_pin, load_pin, clock_pin, clock_hz
dds ddschip(DDS9850, data_pin, load_pin,  // Set my dds up with 120 MHz
            clock_pin, clock_hz);         // onboard crystal

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// Some variables to use in our program
long toFrequency = 14070000;
long currentFrequency;
long maxFrequency = 40000000;
long minFrequency = 0;
int incrementNumber = 6;
int maxprogramnumber = 6; // Don't forget to increase the menu numbers here!!
int programnumber = 1;

void setup()
{
  Serial.begin(9600);
  Serial.println("Beginning Setup");

  // Set up the LCD’s number of columns and rows:
  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("T.Robb V0.1b "); // Print a little message
  lcd.setCursor(0, 1);
  lcd.print(" DDS Sine wave ");
  delay(2000);

  // Set up pins
  pinMode(RESET, OUTPUT);
  pinMode(data_pin, OUTPUT);
  pinMode(load_pin, OUTPUT);
  pinMode(clock_pin, OUTPUT);
  pinMode(buttonPin, INPUT);
  digitalWrite(buttonPin, HIGH);

  ddschip.calibrate(calibrationValue); // This is a value we change to calibrate
                                       // our particular chip more accurately
  ddschip.setfrequency(toFrequency);
  lcd.clear();
}

void loop()
{
  if(toFrequency >= maxFrequency)
  {
    (toFrequency = maxFrequency);
  }

  if(toFrequency <= minFrequency)
  {
    (toFrequency = minFrequency);
  }

  ddschip.setfrequency(toFrequency);
  currentFrequency = toFrequency;

  switch(incrementNumber)
  {
    case 0:
      Serial.println("increment amount is 1 Hz");
      lcd.setCursor(0, 0);
      lcd.print("Change By 1 Hz");
      break;

    case 1:
      Serial.println("increment amount is 10 Hz");
      lcd.setCursor(0, 0);
      lcd.print("Change By 10 Hz ");
      break;

    case 2:
      Serial.println("increment amount is 100 Hz");
      lcd.setCursor(0, 0);
      lcd.print("Change By 100 Hz ");
      break;

    case 3:
      Serial.println("increment amount is 1 000 Hz");
      lcd.setCursor(0, 0);
      lcd.print("Change By 1 kHz");
      break;

    case 4:
      Serial.println("increment amount is 10 000 Hz");
      lcd.setCursor(0, 0);
      lcd.print("Change By 10 kHz");
      break;

    case 5:
      Serial.println("increment amount is 100 000 Hz");
      lcd.setCursor(0, 0);
      lcd.print("Change By 100 kHz");
      break;

    case 6:
      Serial.println("increment amount is 1 000 000hz");
      lcd.setCursor(0, 0);
      lcd.print("Change By 1 MHz");
      break;

    default:
      Serial.println("increment amount is 100 Hz");
      lcd.setCursor(0, 0);
      lcd.print("Change By 100 Hz ");
      break;
  }

  lcd.setCursor(0, 1);
  lcd.print("Freq is "); // Print to LCD
  lcd.setCursor(8, 1);
  lcd.print(currentFrequency);

  Serial.println(incrementNumber); // Temporary for debugging delete me

  Serial.print("Current frequency is set to: ");
  Serial.println(currentFrequency);

  while((analogRead(buttonPin))>=1000) // Do nothing while no buttons pressed to chill out
  {
  }

  delay(5);
  if (analogRead(buttonPin)>=100 && analogRead(buttonPin) <= 200) // We have pushed up
  {
    upFrequency();
    delay(300);
  }

  if(analogRead(buttonPin)>=200 && analogRead(buttonPin) <= 400) // We have pushed down
  {
    downFrequency();
    delay(300);
  }

  if ((analogRead(buttonPin)) <= 50) // We have pushed right
  {
    incrementNumber++;
    delay(300);
  }

  if(analogRead(buttonPin) >= 400 && analogRead(buttonPin)<=600) // We have pushed left
  {
    incrementNumber–;
    delay(300);
  }

  if(incrementNumber > 6) // This is where the menu goes around and around
  {
    incrementNumber = 0;
  }
  if(incrementNumber < 0)
  {
    incrementNumber = 6;
  }

  delay(100);
  lcd.clear();
}

void upFrequency()
{
  Serial.println("Going UP Frequency");
  switch(incrementNumber)
  {
    case 0:
      toFrequency = (toFrequency + 1);
      break;

    case 1:
      toFrequency = (toFrequency + 10);
      break;

    case 2:
      toFrequency = (toFrequency + 100);
      break;

    case 3:
      toFrequency = (toFrequency + 1000);
      break;

    case 4:
      toFrequency = (toFrequency + 10000);
      break;

    case 5:
      toFrequency = (toFrequency + 100000);
      break;

    case 6:
      toFrequency = (toFrequency + 1000000);
      break;

    default:
      toFrequency = (toFrequency + 10);
      break;
  }

}


void downFrequency()
{
  Serial.println("Going DOWN Frequency");
  switch(incrementNumber)
  {
    case 0:
      toFrequency = (toFrequency – 1);
      break;

    case 1:
      toFrequency = (toFrequency – 10);
      break;

    case 2:
      toFrequency = (toFrequency – 100);
      break;

    case 3:
      toFrequency = (toFrequency – 1000);
      break;

    case 4:
      toFrequency = (toFrequency – 10000);
      break;

    case 5:
      toFrequency = (toFrequency – 100000);
      break;

    case 6:
     toFrequency = (toFrequency – 1000000);
     break;

    default:
      toFrequency = (toFrequency – 10);
      break;
  }

}
like image 799
Marc Howard Avatar asked Sep 02 '13 12:09

Marc Howard


People also ask

How do I fix stray errors?

Open the source code with an editor which is able to show special chars. Like 'vim'. Go to the line which is reported and you see the straying special char. That happens if you had opend or edited you sourcecode with an editor that enters “non breakable spaces” instead of the common whitespace.

What is stray error in C?

Error: stray '\240' in program is a character encoding error message. \240 is a non-breaking space in iso8859-1 encoding used on web pages, especially when the code shouldn't get line-wrapped by the browser. The compiler doesn't understand non-breaking space and reports about a straying special character error. eg.

How do I fix a stray error in Arduino?

All you have to do is to remove the invalid characters. The invalid character may or may not be visible. If you cannot see any character just remove the space before the line. After removing all the invalid spaces and characters, your code will compile fine.

How do I get rid of error stray 342?

The problem is that you have Unicode quotation marks instead of ASCII quotation marks; probably your editor automatically changed them, or you copied the text from a site that does this automatically in its authoring software. Replace the quotes with normal ASCII quote (0x22, ") and it should work.


1 Answers

You've somehow ended up with "en dash" characters, rather than normal minus signs, in the downFrequency function.

Make sure you're editing using a text editor, not a word processor; and for each of these:

toFrequency = (toFrequency – 1);
                           ^

delete the marked character, and retype as a normal minus sign.

(If you're interested in the gory details, the "dash" character is Unicode 2013, encoded in UTF-8 as three bytes with octal values 324,200,223, which is why you see those numbers in the error messages.)

like image 94
Mike Seymour Avatar answered Oct 22 '22 20:10

Mike Seymour