Внешний массив, как использовать - PullRequest
1 голос
/ 21 февраля 2012

Я хочу использовать внешний массив символов, скажем, размером 50.

У меня есть extern.h

extern char arr[50];

У меня есть AC, где я получаю доступ к arr.

и у меня есть bc, это мой файл драйвера.

Также у меня есть определения функций в ac

Теперь в моем файле драйвера bc есть

#include"extern.h"
#include"a.h"
char arr[50];
int main()
{
//call to function in a.c
}

и в моем AC * у меня есть

#include"a.h"
#include"extern.h"
int function1()
{
//accessing arr, say printing arr[1]
}

Это дает мне ошибку сегмента.

Включаю ли я право файла, и мои объявления о внешнем var в extern.h и в bccorrect.?

Что вызывает ошибку сегмента?

1 Ответ

0 голосов
/ 03 ноября 2013

Нет проблем в том, как вы используете extern .

Если объявление extern в bc скрыло бы объявление char arr[50];, то вы быесть ошибка связи.

extern char arr[50];
char arr[50];
int main() {
  //call to function in a.c
}

Проблема должна быть в другом месте.Может быть, используется printf ?

printf("%c\n", arr[1]);  // works
printf("%s\n", &arr[1]); // may cause a seg fault depending on arr content
...