2012-05-10 16 views
0

MPLAB X IDE(PIC開発用)を使用してCでライブラリを作成します。私はMyProjectとヘッダフォルダ内abc.h作成する必要がMyProjectの中で、このライブラリを使用してMPLAB X IDEを使用してライブラリプロジェクトでグローバル変数を作成する方法

ファイル

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

abc.c:

マイライブラリABCLibは、このようなものの単純なソースファイルがあります。

ファイル

#ifndef _ABC_H 
#define _ABC_H 

void abcTest(int n); 

#endif; 
abc.h欲しい商品whereever nの値を取得することができabcTest()を呼び出した後

ファイルMyProject.c

#include "abc.h" 

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

今、iがnグローバル変数として保存する(メインファイル)、そう、 。

私はすべてのプロジェクトでそれを再利用することを意図してライブラリを開発しています。

答えて

1

グローバル値を使用するすべてのファイルで変数を外部として宣言する必要があります。

例:

ファイル

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

ファイル

#ifndef _ABC_H 
#define _ABC_H 

void abcTest(int n); 

#endif; 

abc.hファイルMyProject.c(メインファイル)

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

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

よろしくお願いいたします。

0

MyProject.cをコンパイルした後、abc.hファイルが翻訳単位に含まれるため、グローバル静的変数はその翻訳単位内に表示されたままになります。外部オブジェクトからそのオブジェクトにアクセスするには、値を外部に渡すことができる翻訳ユニット内の関数を持つ必要があります。

それ以外の場合は、スコープなしでファイルのどこにでも名前を付けるだけで、グローバルになります。複数のファイルにまたがってグローバルキャリーを持たせるには、externキーワードを使用して、別のリンカーシンボルにすでに存在するグローバル変数を参照していることをコンパイラに伝えます。

関連する問題