老鸟问一个菜鸟问题。。。。
好久没有写代码,今天被一个问题难道了,虽然知道怎么解决,但是还是有点不太明白。
比如我有4个文件:
文件一:a.h
#ifndef __AAA_H
#define __AAA_H
int max(int a, int b)
{
return a > b ? a : b;
}
#endif
文件2:b.cpp
#include "a.h"
int getMax(int a, int b)
{
return max(a, b);
}
文件3:c.cpp
#include "a.h"
int getvalue(int a, int b)
{
return max(a, b);
}
文件4:main.cpp
#include <stdio.h>
#include <stdlib.h>
extern int getvalue(int a, int b);
int main(int argc, char *argv[])
{
printf("getval:%d.\n", getvalue(10, 20));
return 1;
}
g++ -o x b.cpp c.cpp main.cpp
c.cpp:(.text+0x0): multiple definition of `max(int, int)'
为啥会报重复定义?a.h中的 #ifndef 这个东西没起作用了?