sup*_*bie 5 c header definition
我有两个C文件和一个标题,如下所示:
头文件header.h:
char c = 0;
Run Code Online (Sandbox Code Playgroud)
file1.c中:
#include "header.h"
Run Code Online (Sandbox Code Playgroud)
file2.c中:
#include "header.h"
Run Code Online (Sandbox Code Playgroud)
编译时我被警告"重复定义".我理解原因,因为变量c在file1.c和file2.c中定义了两次; 但是,我确实需要在两个c文件中引用header.h.我该如何克服这个问题?
Car*_*rum 14
首先,不要在标题中定义变量.extern在头文件中声明变量时使用限定符,并在C文件中的一个(不是两个)或在自己的新文件中定义它(如果您愿意).
标题:
extern char c;
Run Code Online (Sandbox Code Playgroud)
执行:
#include <header.h>
char c = 0;
Run Code Online (Sandbox Code Playgroud)
或者,您可以将标题留在标题中但添加static.使用static将导致不同于extern上面示例中使用的程序行为- 所以要小心.如果你这样做static,包含标题的每个文件都将获得自己的副本c.如果您使用extern,他们将共享一份副本.
第二,使用防范双重包含:
#ifndef HEADER_H
#define HEADER_H
... header file contents ...
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15890 次 |
| 最近记录: |