#ifndef是if not defined的缩写,也可以写成#if !defined 即如果没有定义; #ifdef是if defined的缩写,也可以写成#if defined 即检查是否定义过; 4、#ifdef 和 #if defined 的区别 #ifndef 与#if !defined 的区别相类似,都在于后者可以组成复杂的预编译条件,前者只判断单个宏是否定义 例如: #if defined(PERL_...
ifdef的使用和#if defined()的用法是一样的。 ifndef又和#if !defined()的用法一样(取反的意思)。
#ifndef 的最主要目的是防止头文件的重复包含和编译。 如果#ifndef...#endif在头文件中,千万不要忽略了头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两 个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。 还是把头文件的内...
作为 #if 或 #elif 命令条件的表达式,必须是整数常量预处理器表达式。这与普通的整数常量表达式不同,主要区别在于:(1) 不能在 #if 或 #elif 表达式中使用类型转换运算符。(2) 可以使用预处理运算符 defined。(3) 在预处理器展开所有宏,并且计算完所有 defined 表达式之后,会使用字符 o 替换掉表达式中所有...
1、意义不同 开头的都是预编译指令,就是在正式编译之前,编译器做一些预处理的工作,所以说#if与#ifdef、#ifndef都是,而if是判断语句,不是预编译指令。2、用法 if是条件语句,在运行的过程中根据条件的值选择执行不同的语句。#if是条件编译语句,在编译阶段执行,如果后面跟的条件成立,就编译对应...
#if #ifdef #ifndef #undef 条件编译 1、#if命令 #if的基本含义:如果#if命令后的参数表达式为真,则编译#if到#endif之间的程序段,#endif 命令用来表示#if段的结束,否则跳过这段程序。 #if命令的一般格式如下: #if 常数表达式 语句段 #endif 1.
与#ifdef 相比,仅仅是将 #ifdef 改为了 #ifndef。它的意思是,如果当前的宏未被定义,则对“程序段1”进行编译,否则对“程序段2”进行编译,这与 #ifdef 的功能正好相反。 三者之间的区别 最后需要注意的是,#if 后面跟的是“整型常量表达式”,而 #ifdef 和 #ifndef 后面跟的只能是一个宏名,不能是其他的。
宏、#if 、#ifdef、#ifndef 宏:能避免函数的出栈与入栈操作,减少系统开销,提高运行效率 1.宏名一般用大写。 2.预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。 3.宏定义末尾不加分号 。 4.宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。
可能需要根据不同角色或场景执行不同代码。此时,可以使用 #ifdef 或 #ifndef 来根据预设条件判断执行不同的代码段,实现程序的灵活性与高效性。综上所述,#ifndef 和 #ifdef 是 C++ 中非常实用的预处理器指令,它们在代码组织、优化和测试方面发挥着重要作用,能有效提高代码的可维护性和可读性。
4.2 #ifndef指令 #ifndef指令和#ifdef指令的逻辑相反,#ifndef指令判断后面的标识符是否是未定义的,常用于定义之前未定义的常量,如:#ifndef指令也可以和#else、#endif一起使用 通常,包含多个头文件时,其他的文件可能包含相同的宏定义,#ifndef指令可以防止相同的宏被重复定义。在首次定义一个宏的头文件中用#...