如何在C中创建自己的头文件?
我试图创建自己的头文件,但它不起作用如何在C中创建自己的头文件?,c,file,header,wget,C,File,Header,Wget,我试图创建自己的头文件,但它不起作用 wget.h:2:2: error: invalid preprocessing directive #ifndef__WGET_H__ wget.h:3:2: error: invalid preprocessing directive #define__WGET_H__ wget.h:7:2: error: #endif without #if 我的代码是: //wget header file #ifndef__WGET_H__ #define__W
wget.h:2:2: error: invalid preprocessing directive #ifndef__WGET_H__
wget.h:3:2: error: invalid preprocessing directive #define__WGET_H__
wget.h:7:2: error: #endif without #if
我的代码是:
//wget header file
#ifndef__WGET_H__
#define__WGET_H__
int my_wget (char web_address[]);
#endif /*__WGET_H__*/
这对我来说似乎很好(我读过的例子和我的很相似),我不知道哪里出了问题。有什么想法吗?您必须在预处理器关键字和标签之间留出一个空格:
#ifndef __WGET_H__
#define __WGET_H__
更改:
#ifndef__WGET_H__
#define__WGET_H__
到
(注意
#ifndef
和uuwget\u H_uuu
之间的空格)一切正常,只是缺少空格
#ifndef __WGET_H__
#define __WGET_H__
int my_wget (char web_address[]);
#endif __WGET_H__
您通常会在头文件中使用上述内容,因为在您的项目中,如果(意外地)多次包含同一个头,那么这样编写头将确保它只包含一次头。您需要在预处理器关键字(例如
#define
)之间留一个空格和标签(即\uuuuwget\uh\uuuuu
)。换言之:
#ifndef __WGET_H__
#define __WGET_H__
将起作用。您需要在标记(例如,
\ifndef
)和您正在定义/检查的符号名称之间留一个空格。正如其他人指出的,您缺少一个空格,但也请将符号从\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。实现保留标识符中的任意双下划线,或以下划线开头,后跟大写字符的标识符。你的符号违反了这两个规则。@ PauleTeLeo“双标示在标识符中的任何地方”——C++的真实性,而不是C中的C.。“所有以下划线和大写字母或其他下划线开头的标识符始终保留供任何使用。所有以下划线开头的标识符始终保留在普通和标记名称空间中用作具有文件范围的标识符。“这与意外无关。如果a.h和b.h都包含c.h,那么在同一文件中同时包含a.h和b.h将包含c.h两次。这在实际项目代码中极为常见。(事实上,它甚至在单文件程序中也会发生,因为系统头文件通常包括其他系统头文件。)@JimBalter,是的,我完全同意你的观点,但有时我碰巧做得更多,因为这是一个意外
#ifndef __WGET_H__
#define __WGET_H__