C++中用#define遇到的问题

#include<iostream.h>
#ifndef _CLASS_H_
#define _CLASS_H_
#include"class.h"
int main()
{
int a;
cin>>a;
cout<<a;
return 0;
}
本人在学习c++类与对象中遇到的问题,说什么必须要要包含头文件什么的,用#define定义,可是试着编的程序都显示未定义class.h文件,是哪出错了呢?在线等。

#ifndef _CLASS_H_
#define _CLASS_H_
.......
#endif

这个经常用在,.h文件里,也就是说这个要写在你的class。h中,省略号是你写的.h声明代码,不是放在.Cpp的源文件中,这个形式一是为了防止头文件重定义造成错误而加的,另外可以节省一些编译开销,加快编译效率,注意每个头文件中define后面的 _CLASS_H_是不同的一般规范是文件名的大写,无严格要求。若多个文件都写成一样的就会出现找不到某某头文件!追问

我添加了#endif在main函数之前就ok了,谢谢你啊,别人回答也很好,但你的最详细,就你啦

追答

谢谢采纳!不过要注意规范的书写模式,对今后学习和工作有很好的帮助!

谢谢采纳!不过要注意规范的书写模式,对今后学习和工作有很好的帮助!

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-03
一般在头文件中写#ifndef,防止重定义。

你可以在class.h中写:

#ifndef _CLASS_H_
#define _CLASS_H_
//下面是类的定义
//····
#endif
然后在其他文件中包含头文件#include"class.h",这样能保证class.h的内容只编译一次
第2个回答  2013-09-03
首先,你的#endif在哪?应该在main函数后面。而#include"class.h"是在#ifndef _CLASS_H_
...#endif中间、所以需要在#ifndef _CLASS_H_前面增加#define _CLASS_H_追问

额,我试了一下,还是不行,要不您帮我重新写一下这个小程序吧。

第3个回答  2013-09-03
#define A_H后 A_H本身内容是无意义的

C++中define为什么会出问题?
这是代码冲突问题。在 C++ 中,#define 用于定义符号常量,但在某些情况下它可能导致代码冲突。通过重定义 int 为 long long,你实际上改变了 C++ 的类型系统。这可能导致 std::cin 和 std::cout 的错误,因为他们需要特定的类型来进行输入\/输出。用 scanf 和 printf 代替 cin 和 cout 可以避免这...

C++中用#define遇到的问题
define _CLASS_H_...endif 这个经常用在,.h文件里,也就是说这个要写在你的class。h中,省略号是你写的.h声明代码,不是放在.Cpp的源文件中,这个形式一是为了防止头文件重定义造成错误而加的,另外可以节省一些编译开销,加快编译效率,注意每个头文件中define后面的 _CLASS_H_是不同的一般规范...

c++ define后 endl报错?
define N 5 \/\/去掉分号就好

C++,关于#define的问题,请问一下代码中 \\ 意思?
意思就是 define PCL_ADD_POINT4D EIGEN_ALIGN16 union { float data[4]; struct { float x; float y; float z; }; };

C++宏定义使用宏定义注意点
在使用宏定义时,首先需注意正确的书写格式:#define命令中,与之间应以空格而非等号连接。宏定义所使用的标识符并不属于变量范畴,而是用于宏替换,因此它们不会占用内存空间。通常推荐使用大写字母作为宏名,虽然这并非硬性规定,其主要目的是与变量名相区别,因为变量名通常采用小写字母。值得注意的是,在...

C++ 预编译问题 #ifndef NULL # const int NULL=0
这个问题可以参看Effective c++ 的条款1 这个条款最好称为:“尽量用编译器而不用预处理”,因为#define经常被认为好象不是语言本身的一部分。这是问题之一。再看下面的语句:define ASPECT_RATIO 1.653 编译器会永远也看不到ASPECT_RATIO这个符号名,因为在源码进入编译器之前,它会被预处理程序去掉,...

C++中define用法有所了解,但经常会看到库里面有时会写一大堆的单行的d...
它们的意义简单说就是让能写这些东西,不会造成编译错误。这是微软的一种叫SAL,Source code Annotation Language,的东西,作用有两个:第一是给人看的,明确一些代码的意义,比如最常见的标记函数形参是用来输出的还是用来输入的;第二是给分析工具用的,用来检测符合语法但是存在逻辑错误的代码。

C++ define时最大能定义多大的数字? 比如: #define N 65536 会溢出,有...
define N 65536 只是将后面代码出现N的地方替换成后面的数字,defind不存在数据类型的问题。如果溢出,说明你后面的变量类型的取值范围太小。如果原来用的是short,改成int或者long即可。

为什么我C++中已经加了#define _CRT_SECURE_NO_WARNINGS,但是还是不...
你这个需要放在预编译头文件中,不是直接放在C++文件中,网上的经验是没有预编译头文件这么加,具体看一下我的博文网页链接

c++ #define 语句 花括号后面的逗号
由于#define是在源程序中进行编译前替换,所以,如果替换后程序符合C语法规范,你的这两个宏就是对的,如果不符合规范,就是错的。假设这两个宏已经定义,你可能会这样用:A(x);B(x);而这两行等价于:{...} ,;{...} ,;这样在程序编译时会产生错误,因为C语言中“,”是用来作为逗号表达...

相似回答