在定义头文件时,一般要加入如下语句,以定义test.h为例 #ifndef TEST_H #define TEST_H ··· #endif 用来防止重复包含头文件第一次包含头文件时 XXX没有被定义 第二次再用时 XXX 已经被定义拉就不在包含这个头文件,一般用在程序比较大,涉及的工程文件比较多,为了避免多个文件中定义的重复而使用。 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/96509/showart_1932409.html
by jj807 - Linux文档专区 - 2009-05-18 19:26:15 阅读(767) 回复(0)
多个程序公用一个头文件时头文件的定义是要小心的。容易造成重复定义。 头文件里不要定义变量,采用 extern 声明你的变量和函数。如: #define HASLABEL 1 #define ISFIELD 0 extern UInt cursor; //在其他文件里定义 extern Boolean StrIsNum( CharPtr str ); //在其他文件里定义 把函数声明(不是定义)放在公用头文件里不会有什么问题。 而全局变量确实不宜放在header里面定义,如果被多于一个的.c(cpp)引用,就会出现mu...
一个项目用到两个头文件,在这两个头文件中有相同的定义,如: typedef __int8 int8_t; 请问如何在不改这两个头文件的情况下,使编译通过,不显示重复定义的错误 谢谢
test-1.0使用#ifndef只是防止了头文件被重复包含(其实本例中只有一个头件,不会存在重复包含的问题),但是无法防止变量被重复定义。 # vi test.c ------------------------------- #include #include "test.h" extern i; extern void test1(); extern void test2(); int main() { test1(); printf("ok "); test2(); printf("%d ",i); return 0; } # vi test.h ------------------------------- #ifndef _TEST_H_ #...
例如: #ifndef ST_FONT_DEFINED typedef struct{ int CharSet; int Width; int Height; int Bold; int Italic; }ST_FONT; #define ST_FONT_DEFINED #endif 在2个头文件中这样做了之后,哪个被先include到,将会define ST_FONT_DEFINED。因此,后被include到的那个结构体,就不会再被定义了。 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/99283/showart_2108086.html
各位,小弟请教一个关于头文件中定义函数,在编译时出现重复定义的问题
小弟发现在头文件中加入于预编译控制
#ifndef ***
#define ***
……
#endif
只能防止变量的重复定义错误,而不能保证函数的重复定义错误,
比较郁闷
小弟写了一段测试程序,各位大大帮忙看看
1。head.h
#ifndef __HEAD__
#define __HEAD__
int e;
int i(){
printf("%d\n",e);
return e;
}
#endif
2. head1.c
#include
我写的makefile可能有点问题,就是make的时候,一些头文件由于被多个.cpp文件包含而编译了多次,于是同一个头文件的警告重复输出了好多次。看起来很不舒服。 请问有什么办法解决吗? 谢谢。
相信大多数人定义一个头文件一般如下
#ifndef __XXX_HH
#define __XXX_HH
/*
your code
*/
#ednif
以避免重复定义
最近看了一下 glibc2.2.5 里面的assert.h
发现 他的定义比较有意思 并没有完全用宏来包含所有的内容
如下:
#ifdef _ASSERT_H
# undef _ASSERT_H
# undef assert
# undef __ASSERT_VOID_CAST
# ifdef __USE_GNU
# undef assert_perror
# endif
#endif /* assert.h */
#define _ASSERT_H 1
#include
我写了一个pp文件 file1.pp 内容为 file {'/tmp/1': ensure => directory } file {'/tmp/1/1.txt': content => 'this is 1.txt file' } file {'/tmp/1/2.txt': content => 'this is 2.txt file' } file {'/tmp/1': ensure => absent, force => true } 然后,执行puppet apply file1.pp 报错:提示/tmp/1重复定义 求解决?