我知道我一定是做错了什么。
秩h
#ifndef RANK_H
#define RANK_H
namespace mmi {
int chunk;
void rank(int my_rank);
}
#endif
等级.cpp
#include "rank.h"
namespace mmi {
//do something with chunk
}
主.cpp
#include "rank.h"
int main() {
mmi::chunk = 1;
}
以及汇编的输出;
g++ -g -Wall -std=gnu++11 -c -o main.o main.cpp
g++ -g -Wall -std=gnu++11 -c -o rank.o rank.cpp
mpic++ main.o rank.o -o main
rank.o:(.bss+0x0): multiple definition of `mmi::chunk'
main.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status
Makefile:12: recipe for target 'main' failed
make: *** [main] Error 1
我的理解是头文件被多次包含。但我希望通过使用
#ifndef
.
那么,我能问一下这是怎么回事吗?