gpt4 book ai didi

C++ : Error does not name a type

转载 作者:行者123 更新时间:2023-11-30 01:42:18 30 4
gpt4 key购买 nike

我正在完成一项用 C++ 创建 MIPS 模拟器的作业。我得到了
错误:'temporaries' 没有命名类型
错误:“已保存”未命名类型
我只是在实现算术部分并使用三个文件,main.cpp、al.cpp、al.h。

阿尔.h

#ifndef AL_H
#define AL_H
#include<vector>
#include<string>
#include<cstdlib>
#include<iostream>

int *temporaries;
int *saved;

typedef struct
{
std::string name;
int value;
}label;

//function declarations

#endif

主要.cpp

#include "al.h"
#include<fstream>
std::vector<label> labels;
temporaries=malloc(10*sizeof(int));
saved=malloc(10*sizeof(int));

//main()

铝.cpp

#include "al.h"
using namespace std;
//function definitions

我正在使用 g++

g++ al.cpp main.cpp al.h 

我只是编程的初学者。如果有人能帮助我,那就太好了。

编辑

在头文件中使用 extern 并在源文件中声明变量,就像 paddy 显示的那样,它已修复。感谢所有的帮助!

最佳答案

您不能在全局范围级别进行赋值,除非它正在初始化一个类型。这就是错误消息试图告诉您的内容。

快速修复是把它放在你的主函数中:

int main()
{
temporaries=malloc(10*sizeof(int));
saved=malloc(10*sizeof(int));

// Other program logic here...

return 0;
}

但是请注意,您在头文件中的声明有问题。 al.cpp 中可见的 temporariessaved 版本与 main.cpp 中可见。为了实现这一点,您需要这样的东西:

al.h

extern int *temporaries;
extern int *saved;

void al_init();

al.cpp

// These are the actual symbols referred to by the extern
int *temporaries = nullptr;
int *saved = nullptr;

// Since these belong to `al`, initialize them in that same source unit.
void al_init()
{
temporaries=malloc(10*sizeof(int));
saved=malloc(10*sizeof(int));
}

main.cpp

int main()
{
al_init();
return 0;
}

当然,现在我们得到了 C 和 C++ 风格的奇怪混合,我将不再继续这个兔子洞。希望这有助于您入门。

关于C++ : Error does not name a type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39842391/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com