【问题标题】:Dev-C++ gives '&' reference syntax errorDev-C++ 给出 '&' 参考语法错误
【发布时间】:2012-03-24 02:15:49
【问题描述】:

Dev-C++ 有什么问题,或者我的代码中有关于使用引用变量的错误?

#include <stdio.h>

    struct P {
        int x;  
    };

    int main(int argc, char **argv){
        struct P Point[5];
        struct P & rPoint;

        int i;
        for(i=0;i<=4;i++) {
            rPoint = Point[i]; // I know. I can use Point[i].x = i. But...
            rPoint.x = i;
        }

        for(i=0;i<=4;i++) {
            rPoint = Point[i];
            printf("%d\n", rPoint.x);
        }
       system("pause");
       return 0;
    }

错误: 9 C:***\main.c '&' 标记前的语法错误

【问题讨论】:

  • 我不认为有 Dev-C++ 特定的库,重要的是编译器,而对于 Dev-C++,您通常只使用旧版本的 MinGW(这与通常在其他免费且更好的 IDE)。
  • $ gcc test.cpp test.cpp: In function 'int main(int, char**)': test.cpp:9:20: error: 'rPoint' 声明为引用但未初始化test.cpp:21:22: 错误:“系统”未在此范围内声明
  • 我无法在 mingw 上构建库。该库即将在 Dev-C++ 上打包。有点懒惰:)
  • AFAIK Dev-C++ 只是一个 IDE,背后的编译器是 gcc 并且没有与 Dev-C++ 捆绑的特殊非标准库(但也许我错了)。无论如何,这是 C 和 C++ 的混合体,我会说它是纯 C 语言,使用了 C++ 的一个特性,但没有真正的 C++ 语言;我坚信system("pause") 的使用是一种糟糕而邪恶的编程习惯,即使对于 Windows 程序员也是如此......
  • 你有 devpaks 库吗?无论如何,您不需要特定的 IDE 来使用预编译的动态或静态库。

标签: c dev-c++


【解决方案1】:

C++ 不允许未分配的引用,所以这是你的错误:

struct P & rPoint;

如果要重新分配,请使用指针。

int main(int argc, char **argv){
    struct P points[5];
    struct P* point;

    int i;
    for(i=0;i<=4;i++) {
        point = points + i; // or &points[i]
        point->x = i;
    }
    // ...

【讨论】:

    【解决方案2】:

    C++ 引用不是这样工作的。您必须在定义引用时对其进行初始化。所以像:

    int x = 5;
    int &r = x;   // Initialise r to refer to x
    

    此外,您不能“重新安排”参考;它总是引用同一个变量。所以继续上面的例子:

    int x = 5;
    int y = 10;
    int &r = x;
    
    r = y;  // This will not re-seat y; it's equivalent to x = y
    

    【讨论】:

      【解决方案3】:

      错误:9 C:*\main.c '&' 标记之前的语法错误

      除了其他人所说的之外,您正在将其编译为 C 文件,并且在 C 中不存在引用。如果您想将其编译为 C++,请给它一个 .cpp 扩展名,或者将 point 设为指针而不是引用(实际上,无论如何您都必须将其设为指针,因为您无法重新安装引用)。

      【讨论】:

        猜你喜欢
        • 2018-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-28
        • 2015-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多