Время жизни массива в заголовочном файле - PullRequest
0 голосов
/ 28 февраля 2020

Я хочу определить массив в заголовочном файле вместе с функцией, использующей его. Не внутри функции, а сверху, как глобальная переменная.

Теперь я не уверен, сработает ли это вообще. Как долго будет жить массив? Это похоже на создание локальной переменной в al oop или она останется в живых, поскольку #include "said_header.h" до конца программы?

1 Ответ

0 голосов
/ 01 марта 2020

Имейте в виду, что #include "headerfile.h" в C более или менее логически эквивалентно открытию вашего текстового редактора и замене строки #include всем содержимым включенного файла.

Итак, заголовок файлы лучше всего использовать для объявлений (которые должны быть разделены между различными исходными файлами, то есть единицами компиляции), тогда как определения лучше всего хранить в одном исходном файле. Обратите внимание, что вы можете объявить объект, а затем определить его, и действительно делать это, когда объявление находится в заголовочном файле, - это хороший способ позволить компилятору проверить, что объявление и определение совпадают.

в headerfile.h вы можете поместить объявление вашего массива:

extern char array[100];

, а в один ваших исходных файлов вы можете определить свой массив:

#include "headerfile.h"
char array[100];

а в других исходных файлах вы можете просто ссылаться на глобальный массив:

#include "headerfile.h"

strncpy(array, "some string", sizeof(array) - 1);
...