C++ #包括don';t在C++;
我有一个定义如下的类: Mirf.hC++ #包括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
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:我想你指的是一个命名空间或类静态成员——直到函数第一次运行时才计算静态局部变量。但我在“表达式”的保护伞下加入了缩写词。我明白了。嗯,你必须承认,这是一种延伸:)