Как сделать глобальную переменную в проекте библиотеки с помощью MPLAB X IDE

Я хочу создать библиотеку на C, используя MPLAB X IDE (ide для разработки PIC).

В моей библиотеке ABClib есть один простой исходный файл:

файл abc.c

void abcTest(int n){ 
    // I want store n as global variable
} 

Чтобы использовать эту библиотеку в MyProject, мне нужно создать abc.h внутри папки заголовка MyProject:

файл abc.h

#ifndef _ABC_H
#define _ABC_H 

void abcTest(int n);

#endif;

файл MyProject.c(основной файл)

#include "abc.h"

void main(void) {
    abcTest(10);
}

Теперь я хочу сохранить n как глобальную переменную, поэтому после вызова abcTest() я могу получить значение n, где захочу.

Я разрабатываю библиотеку с намерением повторно использовать ее во всех своих проектах.


person blow    schedule 10.05.2012    source источник


Ответы (2)


Вам нужно будет объявить переменную как внешнюю во всех файлах, в которых вы хотите использовать ее глобальное значение.

Пример:

файл abc.c

extern int global_a;
void abcTest(int n){ 
    global_a+=n;
} 

файл abc.h

#ifndef _ABC_H
#define _ABC_H 

void abcTest(int n);

#endif;

файл MyProject.c(основной файл)

#include "abc.h"
int global_a = 0; // always initialize global variables

void main(void) {
    abcTest(10);
}

С уважением

person Carlos    schedule 11.05.2012

После компиляции MyProject.c файл abc.h будет включен в единицу перевода, поэтому глобальная статическая переменная должна оставаться видимой в этой единице перевода. Чтобы получить к нему доступ из внешних объектов, вам понадобится функция в единице перевода, которая может передавать значение наружу.

В противном случае просто назовите его в любом месте вашего файла без области видимости, он будет глобальным. Чтобы иметь глобальный перенос между несколькими файлами, используйте ключевое слово extern, чтобы сообщить компилятору, что вы ссылаетесь на глобальную переменную, уже существующую в другом символе компоновщика.

person Luminous_Path    schedule 10.05.2012