Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_c
提交
8f3a31dc
S
skill_tree_c
项目概览
CSDN 技术社区
/
skill_tree_c
通知
24
Star
4
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_c
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
8f3a31dc
编写于
10月 23, 2021
作者:
F
feilong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加#undef和条件编译
上级
183e4c96
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
256 addition
and
2 deletion
+256
-2
data/3.C语言高阶/4.预处理器/3.#undef指令/config.json
data/3.C语言高阶/4.预处理器/3.#undef指令/config.json
+4
-1
data/3.C语言高阶/4.预处理器/3.#undef指令/undef.json
data/3.C语言高阶/4.预处理器/3.#undef指令/undef.json
+6
-0
data/3.C语言高阶/4.预处理器/3.#undef指令/undef.md
data/3.C语言高阶/4.预处理器/3.#undef指令/undef.md
+41
-0
data/3.C语言高阶/4.预处理器/4.条件编译/config.json
data/3.C语言高阶/4.预处理器/4.条件编译/config.json
+5
-1
data/3.C语言高阶/4.预处理器/4.条件编译/ifdef01.json
data/3.C语言高阶/4.预处理器/4.条件编译/ifdef01.json
+6
-0
data/3.C语言高阶/4.预处理器/4.条件编译/ifdef01.md
data/3.C语言高阶/4.预处理器/4.条件编译/ifdef01.md
+115
-0
data/3.C语言高阶/4.预处理器/4.条件编译/ifdef02.json
data/3.C语言高阶/4.预处理器/4.条件编译/ifdef02.json
+6
-0
data/3.C语言高阶/4.预处理器/4.条件编译/ifdef02.md
data/3.C语言高阶/4.预处理器/4.条件编译/ifdef02.md
+73
-0
未找到文件。
data/3.C语言高阶/4.预处理器/3.#undef指令/config.json
浏览文件 @
8f3a31dc
...
@@ -6,5 +6,7 @@
...
@@ -6,5 +6,7 @@
"C语言"
"C语言"
],
],
"children"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[
"undef.json"
]
}
}
\ No newline at end of file
data/3.C语言高阶/4.预处理器/3.#undef指令/undef.json
0 → 100644
浏览文件 @
8f3a31dc
{
"type"
:
"code_options"
,
"author"
:
"幻灰龙"
,
"source"
:
"undef.md"
}
\ No newline at end of file
data/3.C语言高阶/4.预处理器/3.#undef指令/undef.md
0 → 100644
浏览文件 @
8f3a31dc
# 使用 `#undef`
C语言的宏定义可以通过
`#undef`
取消定义,下面程序的输出是哪个选项?
```
c
#include <stdio.h>
#define next(x) x+1
#undef next
int
main
(
int
argc
,
char
**
args
){
printf
(
"%d"
,
next
(
10
));
return
0
;
}
```
## 答案
```
c
error:
use
of
undeclared
identifier
'
next
'
```
## 选项
### 直接定义宏字符串常量
```
c
10
```
### 两个字符串常量组合
```
c
11
```
### 宏直接拼接
```
c
12
```
\ No newline at end of file
data/3.C语言高阶/4.预处理器/4.条件编译/config.json
浏览文件 @
8f3a31dc
...
@@ -6,5 +6,8 @@
...
@@ -6,5 +6,8 @@
"C语言"
"C语言"
],
],
"children"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[
"ifdef01.json"
,
"ifdef02.json"
]
}
}
\ No newline at end of file
data/3.C语言高阶/4.预处理器/4.条件编译/ifdef01.json
0 → 100644
浏览文件 @
8f3a31dc
{
"type"
:
"code_options"
,
"author"
:
"幻灰龙"
,
"source"
:
"ifdef01.md"
}
\ No newline at end of file
data/3.C语言高阶/4.预处理器/4.条件编译/ifdef01.md
0 → 100644
浏览文件 @
8f3a31dc
# 使用 `#undef`
C语言的宏定义可以通过
`#ifdef`
,
`#else`
,
`#endif`
包含条件编译,下面输出11的程序是?
## 答案
```
c
#include <stdio.h>
#define add_encode(x) x+1
#define sub_encode(x) x-1
#define unit_encode(x) x
#define USE_INC
#ifdef USE_INC
#define encode add_encode
#else
#ifdef USE_SUB
#define encode sub_encode
#else
#define encode unit_encode
#endif
#endif
int
main
(
int
argc
,
char
**
args
){
printf
(
"%d"
,
encode
(
10
));
return
0
;
}
```
## 选项
### 直接定义宏字符串常量
```
c
#include <stdio.h>
#define add_encode(x) x+1
#define sub_encode(x) x-1
#define unit_encode(x) x
#define USE_SUB
#ifdef USE_INC
#define encode add_encode
#else
#ifdef USE_SUB
#define encode sub_encode
#else
#define encode unit_encode
#endif
#endif
int
main
(
int
argc
,
char
**
args
){
printf
(
"%d"
,
encode
(
10
));
return
0
;
}
```
### 两个字符串常量组合
```
c
#include <stdio.h>
#define add_encode(x) x+1
#define sub_encode(x) x-1
#define unit_encode(x) x
#define USE_UNIT
#ifdef USE_INC
#define encode add_encode
#else
#ifdef USE_SUB
#define encode sub_encode
#else
#define encode unit_encode
#endif
#endif
int
main
(
int
argc
,
char
**
args
){
printf
(
"%d"
,
encode
(
10
));
return
0
;
}
```
### 宏直接拼接
```
c
#include <stdio.h>
#define add_encode(x) x+1
#define sub_encode(x) x-1
#define unit_encode(x) x
#ifdef USE_INC
#define encode add_encode
#else
#ifdef USE_SUB
#define encode sub_encode
#else
#define encode unit_encode
#endif
#endif
int
main
(
int
argc
,
char
**
args
){
printf
(
"%d"
,
encode
(
10
));
return
0
;
}
```
\ No newline at end of file
data/3.C语言高阶/4.预处理器/4.条件编译/ifdef02.json
0 → 100644
浏览文件 @
8f3a31dc
{
"type"
:
"code_options"
,
"author"
:
"幻灰龙"
,
"source"
:
"ifdef02.md"
}
\ No newline at end of file
data/3.C语言高阶/4.预处理器/4.条件编译/ifdef02.md
0 → 100644
浏览文件 @
8f3a31dc
# 使用 `#undef`
C语言的宏定义可以通过
`#ifdef`
,
`#else`
,
`#endif`
包含条件编译,下面输出10的程序是?
## 答案
```
c
#include <stdio.h>
#define DEBUG
int
main
(
int
argc
,
char
**
args
){
#ifdef DEBUG
printf
(
"%d"
,
encode
(
10
));
#else
printf
(
"%d"
,
encode
(
11
));
#endif
return
0
;
}
```
## 选项
### 直接定义宏字符串常量
```
c
#include <stdio.h>
int
main
(
int
argc
,
char
**
args
){
#ifdef DEBUG
printf
(
"%d"
,
encode
(
10
));
#else
printf
(
"%d"
,
encode
(
11
));
#endif
return
0
;
}
```
### 两个字符串常量组合
```
c
#include <stdio.h>
#define DEBUG
#undef DEBUG
int
main
(
int
argc
,
char
**
args
){
#ifdef DEBUG
printf
(
"%d"
,
encode
(
10
));
#else
printf
(
"%d"
,
encode
(
11
));
#endif
return
0
;
}
```
### 宏直接拼接
```
c
#include <stdio.h>
#define DEBUG
int
main
(
int
argc
,
char
**
args
){
#ifdef DEBUG
printf
(
"%d"
,
encode
(
11
));
#else
printf
(
"%d"
,
encode
(
10
));
#endif
return
0
;
}
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录