<分区>
我现在正在学习C
,我真的不明白header
文件有效,并确保我有两个问题。
1) 让我们看一下下面的程序:main.c:
#include <stdio.h>
#include <string.h>
#include "functions.h"
int main( void )
{
printf( "Num = %d\n", number );
printNumber();
return 0;
}
函数.c:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "functions.h"
void printNumber( void )
{
printf("Number = %d\n", number );
}
函数.h:
#ifndef FUNCTIONS
#define FUNCTIONS
int number;
extern void printNumber( void );
#endif // FUNCTIONS
程序在头文件中的方式没有extern
关键字
涉及到,所以似乎提到了 number
和程序
输出:
Num = 0
Number = 0
第一个问题是,number
是否被初始化(是 number global
变量或类似的,如果 number
仅存在于头文件中)
这是法律法规/程序吗?
第二种情况,我们看下面代码main.c:
#include <stdio.h>
#include <string.h>
#include "functions.h"
int main( void )
{
printf( "Num = %d\n", number );
printNumber();
return 0;
}
函数.c:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "functions.h"
void printNumber( void )
{
printf("Number = %d\n", number );
}
函数.h:
#ifndef FUNCTIONS
#define FUNCTIONS
extern int number;
extern void printNumber( void );
#endif // FUNCTIONS
由于
`undefined reference to number`
这迫使我在 main
中声明 number
:
#include <stdio.h>
#include <string.h>
#include "functions.h"
int number;
int main( void )
{
printf( "Num = %d\n", number );
printNumber();
return 0;
}
哪个是正确的方法,为什么?
最后一件事,为什么不完全适用
void printNumber( void )
也是如此。我看到它正在与
或者没有 extern
关键字。