C++ #包括don';t在C++;

C++ #包括don';t在C++;,c++,include,C++,Include,我有一个定义如下的类: Mirf.h class Mirf{ public: void init(void); }; #include <Mirf.h> class Wireless { public: void init(void); }; Mirf.cpp #include <Mirf.h> Mirf mirf = Mirf(); Mirf::init(){ [Some Code Here] } #include <Wirel

我有一个定义如下的类:

Mirf.h

class Mirf{
public:
    void init(void);
};
#include <Mirf.h>

class Wireless {
public:
    void init(void);
};
Mirf.cpp

#include <Mirf.h>

Mirf mirf = Mirf();

Mirf::init(){
    [Some Code Here]
}
#include <Wireless.h>
#include <Mirf.h>

Wireless::init(){
    mirf.init();
}
#include <Wireless.h>
#include <Mirf.h>

Wireless wireless = Wireless();

int main(){
    wireless.init();
}
#包括
Mirf Mirf=Mirf();
Mirf::init(){
[这里有一些代码]
}
无线类使用Mirf实例:

无线.h

class Mirf{
public:
    void init(void);
};
#include <Mirf.h>

class Wireless {
public:
    void init(void);
};
#包括
类无线{
公众:
void init(void);
};
无线.cpp

#include <Mirf.h>

Mirf mirf = Mirf();

Mirf::init(){
    [Some Code Here]
}
#include <Wireless.h>
#include <Mirf.h>

Wireless::init(){
    mirf.init();
}
#include <Wireless.h>
#include <Mirf.h>

Wireless wireless = Wireless();

int main(){
    wireless.init();
}
#包括
#包括
无线::init(){
mirf.init();
}
我的主要方法是:

Main.cpp

#include <Mirf.h>

Mirf mirf = Mirf();

Mirf::init(){
    [Some Code Here]
}
#include <Wireless.h>
#include <Mirf.h>

Wireless::init(){
    mirf.init();
}
#include <Wireless.h>
#include <Mirf.h>

Wireless wireless = Wireless();

int main(){
    wireless.init();
}
#包括
#包括
无线=无线();
int main(){
wireless.init();
}
代码正常编译,但Mirf.cpp中的
[此处的某些代码]
未调用:



我的代码有什么错误?

仅仅因为代码是
\include
d并不意味着它将被调用。只有
main
函数被自动调用,任何其他函数都需要在表达式中引用,否则它们将不会运行。

仅仅因为代码是
#include
d并不意味着它将被调用。只有
main
函数被自动调用,任何其他函数都需要在表达式中引用,否则它们将无法运行。

也许您需要刷新打印缓冲区?要添加到Jim的注释中,请尝试将
\n
放在
printf
字符串的末尾,因为
Mirf
是一个
Mirf24L
Mirf.init()
不会调用
Nrf24l::init()
。你应该找
Mirf24L::init()
吗?@Rob我的代码中有几个
extern
,我会编辑我的帖子@Shahbaz和@Jim the printf就是一个例子。实际上,我会把这个字符串发送到串口。类似于
Serial.println(“测试”)请不要发布类似于已损坏代码的代码。请创建一个完整、最小的程序来演示错误,然后将程序复制粘贴到问题中(不要重新键入!)。也许您需要刷新打印缓冲区?要添加到Jim的注释中,请尝试将
\n
放在
printf
字符串的末尾,因为
Mirf
是一个
Mirf24L
,所以
Mirf.init()是有意义的
不会调用
Nrf24l::init()
。你应该找
Mirf24L::init()
吗?@Rob我的代码中有几个
extern
,我会编辑我的帖子@Shahbaz和@Jim the printf就是一个例子。实际上,我会把这个字符串发送到串口。类似于
Serial.println(“测试”)请不要发布类似于已损坏代码的代码。请创建一个完整、最小的程序来演示错误,然后将程序复制粘贴到问题中(不要重新键入!)。这只是部分正确。如果存在某种类型的静态实例
X
,则将在
main
之前调用
X::X()
(或通常指定的构造函数)。也许是这样,也许不是,但从给定的代码来看,这只是猜测。@bitmask:我想你指的是一个命名空间或类静态成员——直到函数第一次运行时才计算静态局部变量。但我在“表达式”的保护伞下加入了缩写词。我明白了。嗯,你必须承认,这是一种延伸:)这只是部分正确。如果存在某种类型的静态实例
X
,则将在
main
之前调用
X::X()
(或通常指定的构造函数)。也许是这样,也许不是,但从给定的代码来看,这只是猜测。@bitmask:我想你指的是一个命名空间或类静态成员——直到函数第一次运行时才计算静态局部变量。但我在“表达式”的保护伞下加入了缩写词。我明白了。嗯,你必须承认,这是一种延伸:)