C++ C编译错误:杂散'\200';在程序和预期中';)';前数值常数

C++ C编译错误:杂散'\200';在程序和预期中';)';前数值常数,c++,c,C++,C,我复制了这个程序,我觉得void downFrequency函数有问题 这是给你的。以下是编译器错误: 为“Arduino Uno”编译“我的dds” MY_dds.ino:程序中的杂散'\342' MY_dds.ino:程序中的游离'\200' MY_dds.ino:程序中的游离'\223' MY_dds.ino:程序中的游离'\342' MY_dds.ino:程序中的游离'\200' MY_dds.ino:程序中的游离'\223' MY_dds.ino:程序中的游离'\342' MY_dds

我复制了这个程序,我觉得void downFrequency函数有问题

这是给你的。以下是编译器错误:

为“Arduino Uno”编译“我的dds”

MY_dds.ino:程序中的杂散'\342'
MY_dds.ino:程序中的游离'\200'
MY_dds.ino:程序中的游离'\223'
MY_dds.ino:程序中的游离'\342'
MY_dds.ino:程序中的游离'\200'
MY_dds.ino:程序中的游离'\223'
MY_dds.ino:程序中的游离'\342'
MY_dds.ino:程序中的游离'\200'
MY_dds.ino:程序中的游离'\223'
MY_dds.ino:程序中的游离'\342'
MY_dds.ino:程序中的游离'\200'
MY_dds.ino:程序中的游离'\223'
MY_dds.ino:程序中的游离'\342'
MY_dds.ino:程序中的游离'\200'
MY_dds.ino:程序中的游离'\223'
MY_dds.ino:程序中的游离'\342'
MY_dds.ino:程序中的游离'\200'
MY_dds.ino:程序中的游离'\223'
MY_dds.ino:程序中的游离'\342'
MY_dds.ino:程序中的游离'\200'
MY_dds.ino:程序中的游离'\223'
MY_dds.ino:程序中的游离'\342'
MY_dds.ino:程序中的游离'\200'
MY_dds.ino:程序中的游离'\223'
MY_dds.ino:程序中的游离'\342'
MY_dds.ino:程序中的游离'\200'
MY_dds.ino:程序中的游离'\223'
MY_dds.ino::在函数“void downFrequency()”中:
MY_dds.ino:应为数值常量前的“)”
MY_dds.ino:应为数值常量前的“)”
MY_dds.ino:应为数值常量前的“)”
MY_dds.ino:应为数值常量前的“)”
MY_dds.ino:应为数值常量前的“)”
MY_dds.ino:应为数值常量前的“)”
MY_dds.ino:应为数值常量前的“)”
MY_dds.ino:应为数值常量前的“)”
编译错误
节目如下:

#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;
  }

}
#包括
#包括
#包括
#定义重置13
#定义数据_引脚12
#定义负载_引脚A5
#定义时钟引脚A4
#定义时钟频率120000000LL
#定义校准值-0.0400000//这是我们更改为校准的值
//我们的特殊芯片更准确
#在A0中定义按钮
//芯片、数据引脚、负载引脚、时钟引脚、时钟频率
dds芯片(DDS9850,数据引脚,负载引脚,//将我的dds设置为120 MHz
时钟_引脚,时钟_hz);//车载水晶
液晶显示器(8,9,4,5,6,7);
//在我们的程序中使用的一些变量
长到频率=14070000;
长电流频率;
长最大频率=40000000;
长最小频率=0;
整数递增数=6;
int maxprogramnumber=6;//别忘了增加这里的菜单号!!
int程序编号=1;
无效设置()
{
Serial.begin(9600);
Serial.println(“开始设置”);
//设置LCD的列数和行数:
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“T.Robb V0.1b”);//打印一条小消息
lcd.setCursor(0,1);
lcd.打印(“DDS正弦波”);
延迟(2000年);
//设置销钉
引脚模式(复位、输出);
引脚模式(数据引脚,输出);
引脚模式(负载引脚,输出);
引脚模式(时钟引脚,输出);
pinMode(按钮输入,输入);
数字写入(按钮输入,高);
ddschip.calibrate(calibrationValue);//这是我们更改为校准的值
//我们的特殊芯片更准确
DDS芯片。设置频率(toFrequency);
lcd.clear();
}
void循环()
{
中频(toFrequency>=最大频率)
{
(toFrequency=最大频率);
}
if(toFrequency=1000)//不按任何按钮冷却时不执行任何操作
{
}
延误(5);

如果(analogRead(buttonPin)>=100&&analogRead(buttonPin)=200&&analogRead(buttonPin)您在
下频功能中以“en-dash”字符而不是正常减号结束

确保您正在使用文本编辑器而不是文字处理器进行编辑;对于以下每一项:

toFrequency = (toFrequency – 1);
                           ^
删除标记的字符,然后重新键入普通减号


(如果您对血淋淋的细节感兴趣,“破折号”字符在UTF-8中编码为三个字节,八进制值为3242023,这就是您在错误消息中看到这些数字的原因。)

可能是您的双引号(“)错了。请检查它们是否真的是
,而不是

编译器正在抱怨源文件中存在非ASCII字符


我的八进制符生锈了,但在我看来它像UTF-8。
342200223
e28093
,它是Unicode的“破折号”。这段代码由一个拥有美容学位的文本编辑器改成了负号。

简单的拷贝总是会弄乱源代码

可以通过
cat-A yoursrc.c
检查“杂散”问题

对我来说,我通常通过Vim分两步重新格式化代码

vim yoursrc.c
:%!tr -cd '[:print:]\n'

然后编译,
gcc yoursrc.c

上面的源文件的名称是什么,您尝试编译它的确切命令是什么?当您说“复制”时,你是什么意思?可能是PDF文件中的Ctrl-C?无法编译缺少头文件。liquidcystal.h,dds.h什么样的扩展名是
ino
?源文件不应该具有扩展名
C
CC
,这样编译器就知道应该使用什么语言了吗?尽管在这种情况下,您确实得到了答案,请注意真正的参考:发布200多行格式不好的代码,并期望我们检查它以发现指定错误,这是不好的。这发生在我将代码从stackoverflow post复制到vim时。我也遇到了与“错误”相同的问题。