c++ 预编译问题 关于头文件

来源:百度知道 编辑:UC知道 时间:2024/06/27 18:51:26
下面代码为测试用,vs2008

//#ifndef ElemType
//#define ElemType
struct ElemType{
int number; //物品编号
int weight;
};
//#endif

int main(){
ElemType a;
}
注释运行正常

去掉//,编译器:
1.无标记的“struct”未声明符号
2.“a”: 未声明的标识符
晕,哪看不懂啦?
注释号知道吧。//
预编译指令没有被注释起来的时候,就是起作用的时候,代码有问题。

预编译不能这么写吧?你想达到的目的是不让ElemType不重复定义?
这样试试

#ifndef HEADER_ELEM_TYPE_H
#define HEADER_ELEM_TYPE_H
struct ElemType{
int number; //物品编号
int weight;
};
#endif

int main(){
ElemType a;
}

用这个宏HEADER_ELEM_TYPE_H来判断当前文件是否被包含

如果你用vs2008的话应该可以用另外一个宏指令达到你上面的目的

#pragma once
struct ElemType{
int number; //物品编号
int weight;
};

这样多简单

我看不懂啊