首页 文章

C变量范围在多个文件中

提问于
浏览
1

如何在特定文件中创建可见变量/函数?例如,假设我有这样的文件层次:

extern int var;

a.cpp

#include "a.h"

int var;

b.h

#include "a.h"

void function();

b.cpp

#include "b.h"

void function() {
    var = 0;
}

在main.cpp中我希望能够调用 function() ,但不能访问 var 变量

#include "b.h"

int main(int argc, char** argv) {
    function(); /* possible to call */
    var = 0 /* var shouldn't be visible */
}

我不希望文件a.h包含在main.cpp中 - 只有b.h.我怎样才能做到这一点?

2 回答

  • 6

    a.h不需要包含在b.h中,只需要包含在b.cpp中 . 这是因为函数定义只需要 var ,而不是声明 . 除非你绝对必须这样做,否则这条规则不会在其他 Headers 中包含 Headers .

    b.h

    void function();
    

    b.cpp

    #include "b.h"
    #include "a.h"
    
    void function() {
        var = 0;
    }
    
  • 3

    我认为您需要停止尝试使用文件的可见性来隐藏信息,并开始查看C类,这些类允许您通过私有成员“隐藏”“方法”使用的内容:

    class A
    {
    private:
        int var;
    
    public:
        void function()
        {
            var = 0;
        };
    };
    

相关问题