C 语言的接口与实现一书中的代码编译问题
书中的代码
Stack.h
#ifndef __STACK_INCLUDE_H_
#define __STACK_INCLUDE_H_
#define T Stack_T
typedef struct T *T;
extern T Stack_new();
#undef T
#endif
Stack.cpp
#include "Stack.h"
#define T Stack_T
Test.cpp
#include "Stack.h"
int main(int argc, char *argv[])
{
return 0;
}
编译错误,提示d:\cii\Stack.h(5): error C2040: 'Stack_T' : 'Stack_T *' differs in levels of indirection from 'Stack_T'
编译器为VS2003
[解决办法]
#define T Stack_T
后面的T都用 Stack_T代替了
typedef struct T *T;就成了
typedef struct Stack_T *Stack_T
[解决办法]
#define T Stack_T
typedef struct T *T;
你的T到底指代什么,这不是乱了嘛
[解决办法]
“全书都是这样的代码”,那可能是书上出了问题了。