// A.cpp
#include <iostream>
#define MAX_PATH 260
#include "B.h"
using namespace std;
int main()
{
B b;
cout << sizeof(b.path) << endl;
cout << getPathLength() << endl;
return 0;
}
// B.cpp
#include "B.h"
int getPathLength()
{
return sizeof(path);
}
// B.h
#ifndef B_H
#define B_H
#ifndef MAX_PATH
#define MAX_PATH 256
#endif
class B
{
public:
char path[MAX_PATH];
int getPathLength();
}
#endif
请问解释为什么输出是:
260
256
因为你定义了
#define MAX_PATH 260
在A.cpp中,所以 sizeof(b.path) 返回的是字符数组的大小为 260。而 B.cpp 中定义的 getPathLength() 函数中的 MAX_PATH 变量被替换为了 256,因此 getPathLength() 返回的就是该字符串的长度,所以是 256了。这个问题其实很简单,你可以多学习下基本的断点调试,根据变量的变化规律基本就能找到其中的问题。