【问题标题】:C Use variable defined in file being included fromC 使用在包含的文件中定义的变量
【发布时间】:2013-12-25 06:28:00
【问题描述】:

我目前正在谷歌上搜索这个,但我不知道如何措辞。我怀疑有人会指出我重复的问题。但是...如果我有这样的文件

parent.h:

...
include "child.h";
int foo;
...

以及下面的源文件,上面通过头文件调用:

child.c:

int display ()
{
    printf ( "%d\n", foo );
}

现在这是一个简化的示例,目前我正在使用 C++ 并且正在创建一个对象,并且该对象调用另一个对象的方法,例如父文件中声明的 foo。我自然会收到以下错误:

error: ‘foo’ was not declared in this scope

有什么办法可以解决这个范围问题,还是我必须将 foo 作为参数传递下去?

【问题讨论】:

    标签: c++ c include scope


    【解决方案1】:

    我相信你正在寻找extern

    编辑:

    添加一些初始的linkage

    【讨论】:

    • 对于一个函数,你只需要原型int display();,它通常被放入一个头文件中。
    【解决方案2】:

    通常,变量存在于源文件中...

    父.c

    int foo = 0;
    

    ...并且在头文件中externed...

    父.h

    extern int foo;
    

    这样,#includes parent.h 的任何人都会extern foo

    【讨论】:

    • 我认为你犯了一个错误。 parent.c 不应该是 parent.h(没有初始化),parent.h 应该是 child.h,对吗?
    • @Puk14 没有错。 :-D 但是,有很多方法可以实现相同的目标。
    猜你喜欢
    • 1970-01-01
    • 2023-02-06
    • 2012-04-18
    • 2023-04-04
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    相关资源
    最近更新 更多