C++ 在多个Cpp文件中使用变量

C++ 在多个Cpp文件中使用变量,c++,scope,arduino,header-files,atmelstudio,C++,Scope,Arduino,Header Files,Atmelstudio,我在Atmel工作室从事Arduino项目。我需要在一段代码(settings.cpp/settings.h)中声明、初始化和使用int,并在另一个.cpp文件(error.cpp)中使用它。我想知道最好的方法是什么 我的计划是在settings.h中将int声明为extern int,在settings.cpp中初始化它,然后在error.cpp中包含settings.h 我只是想知道这是不是最好的方式来做这件事,或者我需要考虑什么时候出错。CPP访问设置。 谢谢 在.h(头)文件中,定义:

我在Atmel工作室从事Arduino项目。我需要在一段代码(settings.cpp/settings.h)中声明、初始化和使用int,并在另一个.cpp文件(error.cpp)中使用它。我想知道最好的方法是什么

我的计划是在settings.h中将int声明为extern int,在settings.cpp中初始化它,然后在error.cpp中包含settings.h

我只是想知道这是不是最好的方式来做这件事,或者我需要考虑什么时候出错。CPP访问设置。 谢谢

.h
(头)文件中,定义:

extern int myvar;
然后在全局范围内的任何地方使用它。

.h
(头)文件中,定义:

extern int myvar;

然后在全局范围内的任何地方使用它。

另一种方法是在settings.h中定义它private,并在settings.cpp中初始化它

然后,您可以使用
int getVar()
void setVar(int)
,将其在settings.h中声明为公共函数,并在settings.cpp中实现


在错误类中,包括
settings.h
,可以调用这些函数。这种方法需要更多的工作,但往往更安全,因为您可以更好地控制变量发生的情况。

另一种方法是在settings.h中定义它,并在settings.cpp中初始化它

然后,您可以使用
int getVar()
void setVar(int)
,将其在settings.h中声明为公共函数,并在settings.cpp中实现


在错误类中,包括
settings.h
,可以调用这些函数。这种方法需要更多的工作,但往往更安全,因为您可以更好地控制变量的变化。

Hi Quantum,我实际上需要在error.cpp中的函数中使用它。如果我不包含settings.h,我会收到一个错误,说我的int“未在此范围内声明”,包含settings.h是否可以,或者这是一个问题。为什么不在此处包含
settings.h
?如果错误取决于设置,那么就没有办法解决。我不知道为什么,但我的想法是,我应该只在完全必要时才允许访问,并尽可能限制访问。我最近在类和继承方面做了很多工作,我想我只是在试图限制访问权限时遇到了麻烦。谢谢你的回答Quantune是真的,你必须只允许访问必要的内容,但是错误取决于设置。那就决定了!嗨,Quantum,我实际上需要在error.cpp中的函数中使用它。如果我不包含settings.h,我会收到一个错误,说我的int“未在此范围内声明”,包含settings.h是否可以,或者这是一个问题。为什么不在此处包含
settings.h
?如果错误取决于设置,那么就没有办法解决。我不知道为什么,但我的想法是,我应该只在完全必要时才允许访问,并尽可能限制访问。我最近在类和继承方面做了很多工作,我想我只是在试图限制访问权限时遇到了麻烦。谢谢你的回答Quantune是真的,你必须只允许访问必要的内容,但是错误取决于设置。那就决定了!您好,Dr,我本来是这样做的,但仍然必须在我的error.cpp中包含settings.h才能访问这些函数。我真正的问题是在error.cpp中包含settings.h是否有任何不利影响。如果不使用and INCLUDET就可以执行此操作,那么在error.cpp中包含settings.h应该不会有任何副作用。我不知道为什么,但我脑子里想的是,我应该只在完全必要的时候提供访问权限,并尽可能限制访问权限。我最近在类和继承方面做了很多工作,我想我只是在试图限制访问权限时遇到了麻烦。感谢您的回答,我将继续自信地使用include:)嗨,博士,我本来是这样做的,但仍然必须在我的error.cpp中包含settings.h才能访问这些函数。我真正的问题是在error.cpp中包含settings.h是否有任何不利影响。如果不使用and INCLUDET就可以执行此操作,那么在error.cpp中包含settings.h应该不会有任何副作用。我不知道为什么,但我脑子里想的是,我应该只在完全必要的时候提供访问权限,并尽可能限制访问权限。我最近在类和继承方面做了很多工作,我想我只是在试图限制访问权限时遇到了麻烦。谢谢你的回答,我会继续自信地使用include:)