декларация и определение - PullRequest
2 голосов
/ 27 июля 2010

Все еще путают с декларацией и определением в терминах C: если заголовочный файл имеет вид:

#ifndef _BASIC_H_
#define _BASIC_H_

void test();
extern int i; //define or declare
#endif

и два исходных файла f1.c и f2.c содержат этот заголовок, тогда один исходный файл должен определить переменную "i".

но если заголовочный файл имеет вид:

#ifndef _BASIC_H_
#define _BASIC_H_

void test();
int i; //define or declare
#endif

и два исходных файла f1.c и f2.c, содержат этот заголовок без определения переменной «i» в любом файле, он все равно проходит, когда я использую переменную. мои вопросы, когда переменная определена.

Спасибо

1 Ответ

8 голосов
/ 27 июля 2010

Определение переменной - это когда вы выделяете память для хранилища и, возможно, присваиваете ей значение.Объявление - это когда вы заявляете, что переменная с определенным именем и типом существует, но для нее уже выделена память.

Использование ключевого слова extern означает, что вы объявляете переменную, но не определяете ее.

С точки зрения вашего конкретного вопроса, ваш первый пример объявляется, а ваш второй ответ определяет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...