首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C语言中#if,#if defined ,#ifdef,extern的用法描述

C语言中#if,#if defined ,#ifdef,extern的用法描述

作者头像
C语言中文社区
发布2022-05-30 15:12:16
发布2022-05-30 15:12:16
1.7K00
代码可运行
举报
文章被收录于专栏:C语言中文社区C语言中文社区
运行总次数:0
代码可运行

本文来自网络,如有侵权请联系删除,谢谢!

1、#if 和#ifdef

当asd_eee表达式存在而且,值为ture的时候接续向下执行

例如

代码语言:javascript
代码运行次数:0
运行
复制
#define TARGET_LITTLE_ENDINA 1
#define TARGET_BIG_ENDINA   0
#ifdef TARGET_LITTLE_ENDINA
call little endina function
#else
call big endina function
#endif

上面的今天写的代码,发现我不管把TARGET_LITTLE_ENDINA和TARGET_BIG_ENDINA定义成0或者1,调用的都是little endina函数,一直找不到问题所在,看看代码也没有什么问题。经过分析和查找相关的文档,原来是自己没有理解#if和#ifdef之间的区别。 对于#if需要是一个表达式,如果表达式为1则调用#if下面的代码。 对于#ifdef需要的只是这个值有没有定义,并不关心这个值是什么。 表明之间的区别问题就变得非常的容易,只要把上述代码中的#ifdef改成#if就可以达到目的。

2 ,#if defined

,#if defined 的意思是是是否对某一个表达式进行了定义

例如

代码语言:javascript
代码运行次数:0
运行
复制
#if defined(_WIN32) || defined(WIN32)
# include <io.h>
#else
........

例如上面这段代码,如果既没有定义_WIN32也没有定义WIN32,那么include头文件 io.h

3 extern

1.extern用在变量声明中常常有这样一个作用,你在*.c文件中声明了一个全局的变量,这个全局的变量如果要被引用,就放在*.h中并用extern来声明。 2.如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。即下述两个函数声明没有区别: extern int f(); 和int f(); ================================= 如果定义函数的c/cpp文件在对应的头文件中声明了定义的函数,那么在其他c/cpp文件中要使用这些函数,只需要包含这个头文件即可。 如果你不想包含头文件,那么在c/cpp中声明该函数。一般来说,声明定义在本文件的函数不用“extern”,声明定义在其他文件中的函数用“extern”,这样在本文件中调用别的文件定义的函数就不用包含头文件 include “*.h”来声明函数,声明后直接使用即可。 ================================= 举个例子: //extern.cpp内容如下:

代码语言:javascript
代码运行次数:0
运行
复制
// extern.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
extern print(char *p);
int main(int argc, char* argv[])
{
char *p="hello world!";
print(p);
return 0;
}
//print.cpp内容如下
#include "stdafx.h"
#include "stdio.h"
print(char *s)
{
printf("The string is %s/n",s);
}

结果程序可以正常运行,输出结果。如果把“extern”去掉,程序依然可以正常运行。 由此可见,“extern”在函数声明中可有可无,只是用来标志该函数在本文件中定义,还是在别的文件中定义。只要你函数在使用之前声明了,那么就可以不用包含头文件了。

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档