关于 多文件编译 #ifndef 的几个疑问
对 多文件编译 一直有疑问...
看了 http://www.cppblog.com/twzheng/archive/2007/05/07/23584.html 这篇文章.我更是疑问..
“头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。” ————这一段是我从刚刚那个文章里复制下来的...
他说会产生 大量的声明冲突.... 我 写了一个 a.h ,内容如下
....随便写 a.c 和b.c 都包含有#include <names.h> 这一句
但是 编译成一个EXE后。。就是不出错。。
照这篇文章里面的说法。。我的 a.c和b.c 里都 有一个 names 这样一个数据结构....为什么编译可以成功呢?非常不懂
看了 http://www.cppblog.com/twzheng/archive/2007/05/07/23584.html 这篇文章.我更是疑问..
“头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。” ————这一段是我从刚刚那个文章里复制下来的...
他说会产生 大量的声明冲突.... 我 写了一个 a.h ,内容如下
//———names.h———————
#define SLEN 32
struct name_st
{
char first[SLEN];
char last[SLEN];
};
typedef struct name_st names;
void get_name(names *);
void show_name(names *);
....随便写 a.c 和b.c 都包含有#include <names.h> 这一句
但是 编译成一个EXE后。。就是不出错。。
照这篇文章里面的说法。。我的 a.c和b.c 里都 有一个 names 这样一个数据结构....为什么编译可以成功呢?非常不懂
...全文
相关推荐
#ifdef,#else,#endif和#ifndef的用法
#ifdef,#else,#endif和#ifndef的用法
#ifndef #define #endif的用法
#ifndef #define #endif的用法
【C/C++】#ifndef,#define用法
主要是#ifndef和#define的用法说明,并举例说明便于理解。
C语言头文件避免重复包含、#pragma once和#ifndef区别
一般情况下,我们都是把函数声明、类定义、模板定义等写到一个头文件里,需要时将相应的头文件用#include包含到源文件(*.cpp文件)里来。但头文件中又允许包含其它的头文件,这样就难免发生某个头文件被重复地包含。我们可以使用编译预处理命令避免这种情况的发生。
KEIL 同一工程中的多文件处理
本文详细介绍了在KEIL同一工程中进行多文件处理的方法。


