区别和联系: 标准与非标准:#ifndef,#define,#endif是标准的 C++ 预处理指令,而#pragma once是非标准的,但广泛得到支持。 可读性:#pragma once更简洁,不需要在头文件中编写两行以上的代码,而#ifndef,#define,#endif在需要一定的重复代码。 跨平台性:#ifndef,#define,#endif更具有跨平台性,可在不同的编译器和...
1#include <stdio.h>2#defineSTR(s) #s3#defineCONS(a,b) (int)(a##e##b)4intmain(void)5{6#ifdef STR7printf(STR(VCK));8#endif9#ifdef CONS10printf("\n%d\n",CONS(2,3));11#endif12return0;13}1415/*(绝大多数是使用不到这些的,使用到的话,查看手册就可以了)16* 第一个宏,用#把...
C++ ifndef /define/ endif 作用和用法 ifndef/define/endif”主要目的是防止头文件的重复包含和编译 比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。 还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会...
ifndef、#define、#endif为C语言的3条预处理语句,主要用作条件编译。先介绍一下条件编译:一般情况下,源代码文件中的所有行都参加编译,但有时需要指定一部分代码在某个条件下才被编译,这就叫做条件编译。条件编译发生在预处理阶段,在C中,主要通过#if、#elif、#else、#ifdef、#ifndef、#endi...
有些头文件重复包含,会引起错误,比如在头文件中定义了全局变量(虽然这种方式不被推荐,但确实是C规范允许的)这种会引起重复定义。 是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码? #endif或者其他方式避免头文件重复包含,只有好处没有坏处。个人觉得培养一个好的编程习惯是学习编程的一个重要分支。
2 #define SQR(x) (x*x) 3 int main(void) 4 { 5 int b=3; 6 #ifdef SQR//只需要宏名就可以了,不需要参数,有参数的话会警告 7 printf("a = %d\n",SQR(b+2)); 8 #endif 9 return 0; 10 } 11 12 /* 13 *首先说明,这个宏的定义是错误的。并没有实现程序中的B+2的平方 ...
#undef指令用于”取消“已定义的#define指令。假如有如下定义:通过 将移除上面的定义,然后即可将LENGTH定义为一个新值。即使原来没有定义LENGTH,取消LENGTH的定义仍然有效。如果想使用一个名称,又不确定之前是否已经用过,可以用#undef指令取消该名字的定义 4. 条件编译 4.1 #ifdef、#else和#endif指令 #ifdef...
endif 指令 endif是一个条件编译指令,用于结束条件编译块。 语法如下: #endif 当条件编译块中的代码执行完毕后,需要使用endif指令来结束该块。这样可以确保编译器正确处理整个条件编译块。 下面是一个示例: #ifndef MYHEADER_H #define MYHEADER_H // 头文件内容 #endif 在上面的示例中,通过使用ifndef和endif配对...
ifndef def 语句1 else 语句2 endif 表示如果def在前面进行了宏定义那么就编译语句1(语句2不编译),否则编译语句2(语句1不编译)2、宏定义的格式如下:define 标识符 字符串 其中,#表示这是一条预处理命令;#define为宏定义命令;“标识符”为宏定义的宏名;“字符串”可以上常数、表达式、...