c语言如何避免重复包含头文件? 10

比如我有三个源文件a.cpp,b.cpp,c.cpp,都因为printf函数需要用到stdio.h头文件,而且在a中需要调用b,c两个文件,如果使用文件包含#includ... 比如我有三个源文件a.cpp,b.cpp,c.cpp,都因为printf函数需要用到stdio.h头文件,而且在a中需要调用b,c两个文件,如果使用文件包含#include"b.cpp"是不是会重复包含了stdio.h头文件了,如何避免这个情况。
源.cpp:
#include <stdio.h>
#include"源1.cpp"
#include"源2.cpp"
int main()
{
int a = 3, b = 4;
printf("before swap:a=%d,b=%d\n", a, b);
swap1(a, b);
printf("in main:after swap1:a=%d,b=%d\n", a, b);
swap2(a, b);
printf("in main:after swap2:a=%d,b=%d\n", a, b);
}
源1.cpp
#include <stdio.h>
extern void swap1(int a, int b)
{
int temp = a;
a = b;
b = temp;
printf("in swap1:after swap1:a=%d,b=%d\n", a, b);
}
#include <stdio.h>
extern void swap2(int& a, int& b)
{
int temp = a;
a = b;
b = temp;
printf("in swap2:after swap2:a=%d,b=%d\n", a, b);
}
展开
 我来答
laneast
2020-05-19 · TA获得超过471个赞
知道小有建树答主
回答量:258
采纳率:100%
帮助的人:197万
展开全部
#include 通常不会包含 .cpp 文件,如果包含的话,一般仅会包含如 static 的函数这样不会因为多次包含而导致链接问题的。
为了防止重复包含,头文件中都会有相应的处理,比如加上
#ifndef _STDIO_H_
#define _STDIO_H_
// 真正的头文件内容

#endif
这样在多次包含的时候,因为已经定义了 _STDIO_H_,所以第二次包含的内容会被忽略。
比较新的 C++ 编译器也支持 #pragma once,这样只要在头文件开头写上这一句,编译器就会在处理头文件的时候不包含多次了。
GTA小鸡
高粉答主

2020-05-19 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
  1. #include原则上只能包含头文件,不能包含cpp文件,否则可能出现重复定义的问题。

  2. stdio.h等标准库头文件中已经含有防止重复包含的预编译指令,多次包含这些文件也不会出现任何问题。

更多追问追答
追问

那请问这段代码有什么问题啊。

追答
第一条已经说过,你应该分别编写源1.h和源2.h两个头文件,然后在main()函数所在的源文件中包含这两个头文件,而不是直接包含源1.cpp和源2.cpp两个文件。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式