问题0.如何在visual studio 2017中新建C项目?
在今天课程之中,视频中的Visual Studio 是2015,所以和我的2017不太匹配;
问题1. #ifdef 的用法?
这个是属于条件编译命令,在谭老书上214页有详细解答,不过我要再次地费曼一下;
条件编译:是希望程序中的一部分内容只在满足某种条件下进行编译;
其格式如下:
#ifdef 标识符
程序段1
#else
程序段2
#endif
简而言之就是,之前有东西被#define命令定义过,那么,就执行程序段1,否则执行程序段2
谭老举出了两种应用方法,我觉得其中一种是比较实用的,就是在调试时对很多的printf();输出语句的控制编译,
#ifdef DEBUG
printf("");
#endif
我们就可以对多个调试型输出进行编译控制,我们最终版本肯定要删除这些调试语句,那么一个一个去删除肯定是不太现实的,我们就采用这种比较高效的方法进行控制,如果之前有一个#define DEBUG ,最终我们调试结束后,只需要把这行语句删去即可;
#ifndef 是某个东西未被定义,就执行程序段1,定义了执行程序段2;
问题3.extern关键字?
extern
extern是计算机语言中的一个关键字,可置于变量或者函数前,以表示变量或者函数的定义在别的文件中。提示编译器遇到此变量或函数时,在其它模块中寻找其定义,另外,extern也可用来进行链接指定。
问题4.extern "C"
百科:
1
|
extern
int
i;
|
1
2
3
4
5
|
void
welcome(
void
)
{
if
(i > 0)
printf
(
"Hello World!\n"
);
}
|
1
2
3
4
5
6
7
|
#ifdef __cplusplus /* 如果采用了C++,如下代码使用C编译器 */
extern
"C"
{
/* 如果没有采用C++,顺序预编译 */
#endif
/* 采用C编译器编译的C语言代码段 */
#ifdef __cplusplus /* 结束使用C编译器 */
}
#endif
|