【问题标题】:Using a variable in multiple Cpp files在多个 Cpp 文件中使用变量
【发布时间】:2017-02-21 12:07:18
【问题描述】:

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

我的计划是在 settings.h 中将 int 声明为 extern int,在 settings.cpp 中对其进行初始化,然后在 error.cpp 中 #include settings.h。

我只是想知道这是否是实现此目的的最佳方式,或者在授予 error.cpp 访问 settings.h 时我需要考虑什么

谢谢。

【问题讨论】:

    标签: c++ scope arduino header-files atmelstudio


    【解决方案1】:

    另一种方法是在 settings.h 中将其定义为私有并在 settings.cpp 中对其进行初始化。

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

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

    【讨论】:

    • 您好博士,实际上我最初是这样做的,但仍然必须在我的 error.cpp 中包含 settings.h 才能访问这些功能。我真正的问题是在error.cpp中包含settings.h是否有任何不利影响。并且如果不使用和包含就可以做到这一点
    • 在error.cpp中包含settings.h应该没有副作用。为什么要在不包含的情况下这样做?
    • 我不知道为什么,但我认为我应该只在完全必要时才提供访问权限,并尽可能限制访问权限。我最近在类和继承方面做了很多工作,我想我只是想限制访问。感谢您的回答,我将继续自信地使用包含:)
    【解决方案2】:

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

    extern int myvar;
    

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

    【讨论】:

    • 嗨 Quantum,我实际上需要在 error.cpp 的函数中使用它。如果我不 #include settings.h 我收到一条错误消息,指出我的 int “未在此范围内声明” 是否可以包含 settings.h 或者这是一个问题。
    • 为什么不包括settings.h呢?如果错误取决于设置,则无法解决。
    • 我不知道为什么,但我认为我应该只在完全必要时才提供访问权限,并尽可能限制访问权限。我最近在类和继承方面做了很多工作,我想我只是想限制访问。感谢量子的回答
    • 确实,您必须仅授予对必要内容的访问权限,但错误取决于设置中的某些内容。然后就决定了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    相关资源
    最近更新 更多