编辑:更正了函数名称,并添加了 #pragma once
以下是对我的问题的一个非常简化的描述,如果我这样做:
A.h
#pragma once
static int testNumber = 10;
void changeTestNumber();
A.cpp
#pragma once
#include "A.h"
void changeTestNumber()
{
testNumber = 15;
}
B.h
#pragma once
#include "A.h"
// some other stuff
B.cpp
#pragma once
#include "B.h"
// some other stuff
main.cpp
#pragma once
#include "B.h"
#include <iostream>
int main(){
changeTestNumber();
std::cout<<testNumber<<std::endl;
return 0;
}
为什么在调用时我没有得到testNumber = 15?
当我使用一个被包含在我的头文件中的函数时,到底发生了什么?
如果我去掉int testNumber前面的static,我会得到testNumber初始化两次的错误。
那么当我这样做时,我的头文件是否被编译两次?
提前致谢!
changeNumber
(你的原型),另一个被称为changeTestNumber
(定义)。 - Goodies