C语言环境处理收尾

简介: C语言环境处理收尾

一. 命名约定

一般来讲 函数和宏的用法十分相似所以语言没办法帮我们区分二者。

拿我们平时的一个习惯是:

将宏名全部大写

函数名不要全部大写


二. #undef

当我们下面不想再用一个宏的时候我们可以使用这个符号

这样我们下面就无法使用宏了

举个例子



使用了这个#undef之后 我们就不能再使用Max了


三. 条件编译

直接上代码

#define PRINT 1
int main()
{
#ifdef PRINT
  printf("hehe\n");
#endif
  return 0;
}

调试性的代码,删除可惜,保留又碍事,所以我们可以选择性的编译。

常见的条件编译指令有

1.
#if 常量表达式
 //...
#endif
//常量表达式由预处理器求值。
如:
#define __DEBUG__ 1
#if __DEBUG__
 //..
#endif
2.多个分支的条件编译
#if 常量表达式
 //...
#elif 常量表达式
 //...
#else
 //...
#endif
3.判断是否被定义
#if defined(symbol)
#ifdef symbol
#if !defined(symbol)
#ifndef symbol
4.嵌套指令
#if defined(OS_UNIX)
 #ifdef OPTION1
 unix_version_option1();
 #endif
 #ifdef OPTION2
 unix_version_option2();
 #endif
#elif defined(OS_MSDOS)
 #ifdef OPTION2
 msdos_version_option2();
 #endif
#endif

多分支



判断是否定义


四. 文件包含

4.1 查找策略

查找策略:先在源文件所在目录下查找,如果该头文件未找到,编译器就像查找库函数头文件一样在标准位置查找头文件。如果找不到就提示编译错误。

4.2 文件的嵌套包含

所以说我们可以写出以下代码


当我们写出这些代码的时候 头文件就会只会被引用一次

当然使用#pragma once的效果也是一样的

以上便是本文所有内容,如有错误请各位大佬不吝赐教,感谢留言

目录
相关文章
|
1月前
|
存储 自然语言处理 编译器
C语言程序的翻译环境和执行环境
C语言程序的翻译环境和执行环境
64 0
|
17天前
|
存储 编译器 C语言
C语言学习记录——调试技巧(VS2019环境下)
C语言学习记录——调试技巧(VS2019环境下)
18 2
|
9天前
|
存储 自然语言处理 编译器
C语言——环境与预处理
C语言——环境与预处理
9 0
|
12天前
|
编译器 C语言
C语言收尾 预处理相关知识
C语言收尾 预处理相关知识
10 0
|
1月前
|
编译器 Linux C语言
【C语言】程序环境预处理 -- 详解(下)
【C语言】程序环境预处理 -- 详解(下)
|
1月前
|
存储 程序员 C语言
【C语言】程序环境预处理 -- 详解(上)
【C语言】程序环境预处理 -- 详解(上)
|
1月前
|
存储 自然语言处理 编译器
c语言的程序环境和预处理(一眼丁真)
c语言的程序环境和预处理(一眼丁真)
|
1月前
|
C语言
C语言进阶21收尾(编程练习)(atoi,strncpy,strncat,offsetof模拟实现+找单身狗+宏交换二进制奇偶位)(下)
C语言进阶21收尾(编程练习)(atoi,strncpy,strncat,offsetof模拟实现+找单身狗+宏交换二进制奇偶位)
25 0
|
1月前
|
C语言
C语言进阶21收尾(编程练习)(atoi,strncpy,strncat,offsetof模拟实现+找单身狗+宏交换二进制奇偶位)(上)
C语言进阶21收尾(编程练习)(atoi,strncpy,strncat,offsetof模拟实现+找单身狗+宏交换二进制奇偶位)
69 0
|
1月前
|
自然语言处理 编译器 Linux
C语言进阶⑳(程序环境和预处理)(#define定义宏+编译+文件包含)(下)
C语言进阶⑳(程序环境和预处理)(#define定义宏+编译+文件包含)
27 0