Dev-C++ 给出 '&' 参考语法错误

Posted

技术标签:

【中文标题】Dev-C++ 给出 \'&\' 参考语法错误【英文标题】: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 来使用预编译的动态或静态库。 【参考方案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 设为指针而不是引用(实际上,无论如何您都必须将其设为指针,因为您无法重新安装引用)。

【讨论】:

以上是关于Dev-C++ 给出 '&' 参考语法错误的主要内容,如果未能解决你的问题,请参考以下文章

WordPress网站给出AMP错误

qml 函数的默认参数给出语法错误

如何在 Dev-C++ 中制作简单的 Windows 错误消息框?

QtConcurrent 给出错误

dev-c++ g++ - 错误:类型名/静态常量未声明(首先使用此函数)[关闭]

c语言编译软件都有哪些