C 全局对象声明

c++ global object declaration

本文关键字:声明 对象 全局      更新时间:2023-10-16

目前我正在尝试在C 中声明一个全局对象如下:

in Globals.h

#pragma once
#include "Class.h"
extern Class *obj;

然后在一个称为globals.cpp i的单独文件中有

#include "globals.h"
Class *obj;

然后在main.cpp中有

#include "globals.h"

但是编译器在me上丢弃了此错误

in globals.h: error C2143: syntax error : missing ';' before '*'    

我不明白这一点,因为这篇文章:C 全局对象解释了这是完成的方式。

问题在于 class.h包括 globals.h。您说,如果执行此操作,则该程序会汇总但会违反访问。然后,逻辑有一个错误,这是一个不同的问题。

首先修复编译器错误。违规访问可能是因为您没有正确初始化全局 - 即,它只是一个NULL指针。

C2143通常意味着您在变量声明之前没有找到class Class的定义/声明。

一种方法是,您可能错过了class.h中类定义结束时的分号。

class.h

你有

class Class
{
    ....
}

您已经忘记了上面的分号。

更改为

class Class
{
    ....
} ;

如果不是这样,是否有其他原因在class.h中找不到类的定义。

尝试使用/p进行编译,然后在编辑器中打开 main.i,并检查是否在extern语句之前查看class Class的声明。