我不明白为啥会出现语法错误

Posted

技术标签:

【中文标题】我不明白为啥会出现语法错误【英文标题】:I do not understand why it comes up with a syntax error我不明白为什么会出现语法错误 【发布时间】:2017-10-31 17:55:08 【问题描述】:

我正在用 c++ 类编写程序,但我不明白为什么这个语法错误是未定义分号。如果你需要我发送stacktrace,我会放在评论部分。我在这个 H 类中有多个错误。我是 C++ 的新程序员。感谢您的贡献。

#pragma once
#ifndef CONVERT_M_TO_FT_H
#define Convert_M_to_Ft


class Convert_M_to_Ft 
private:
    double feet, meters, inches, centimeters;
    const double METERS_PER_FOOT;
    const double INCHES_PER_FOOT;
public:
    Convert_M_to_Ft();
    void conversion();
    void setFeetAndInches(double feet, double inches);
    double getMeters();
    double getCentimeters();
;
#endif

【问题讨论】:

#define Convert_M_to_Ft ----> #define CONVERT_M_TO_FT_H。您设置它的方式有 Convert_M_to_Ft 扩展为一个空的令牌序列。你的班级没有名字。 【参考方案1】:

替换

#define Convert_M_to_Ft

#define CONVERT_M_TO_FT_H

问题是预处理器扩展了

class Convert_M_to_Ft 
private:
   //...
;

class 
private:
   //...
;

否则。

【讨论】:

你在开玩笑吧。 @jdog1218 “你在开玩笑吗” 嗯??当然不是。这正是您的代码所发生的情况。出了什么问题?【参考方案2】:

因为你:

#define Convert_M_to_Ft

这意味着Convert_M_to_Ft 将在您的代码中转换为空。特别是这一行:

public:
    Convert_M_to_Ft();

将转换为:

public:
    ();

这可能就是您的语法错误的来源。如果这不是唯一的错误,您应该在实际行号中包含实际错误。

您可能打算在顶部执行此操作:

#pragma once
#ifndef CONVERT_M_TO_FT_H
#define CONVERT_M_TO_FT_H

【讨论】:

以上是关于我不明白为啥会出现语法错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥cad安装会出现命令行语法错误

为啥“WITH”子句在 Informix 上会出现语法错误?

Access 2013:为啥会出现此语法错误?

为啥会出现“INSERT INTO 语句中的语法错误”?

我不明白的 C++ 错误:语法缺失 ';'在标识符之前

Postgresql: 在 ""ViewShifts"" 处或附近出现语法错误 为啥我在下面的查询中会出现此错误?