私はcの構造とヘッダーファイルの宣言について質問があります。 私は3つの変数に別の2つの変数がリンクされているコードを書いています。私は構造を宣言することに決めました。私は擬似コードを書いているの下にヘッダーファイルのグローバル構造
//----------registers.h---------
#ifndef __REG__H__
#define __REG__H__
struct ADE_reg_type
{
unsigned int i : 4;
unsigned int j : 4;
};
extern struct ADE_reg_type AIRMS_reg;
extern struct ADE_reg_type BIRMS_reg;
extern struct ADE_reg_type CIRMS_reg;
#endif
//-----------registers.c-------------------
#include "registers.h"
struct ADE_reg_type AIRMS_reg = {.i = 4,.j = 5}; //initializing
struct ADE_reg_type BIRMS_reg = {.i = 3,.j = 4}; //initializing
struct ADE_reg_type CIRMS_reg = {.i = 1,.j = 9}; //initializing
//-----------main.c-------------------
#include "registers.h"
int main()
{
display_numbers(AIRMS_reg); //display_numbers(struct ADE_reg_type) has
//defined in another .c file which also includes
// registers.h
}
私は何がしたいんだと、私はすべての.cファイルにアクセスできる変数を持つべきであるということです。変数の範囲はグローバルでなければなりません。それはグローバルな構造を使用する正しい方法ですか、私はここでいくつかの間違いをしていますか?
グローバル*を使うのは悪い考えですが、実際にグローバルが必要な状況であれば、これはどうやってやるのですか。ここで唯一奇妙なのは、 'display_numbers()'の呼び出しです。この関数があなたのグローバルの値を表示する場合、パラメータは必要ありません。おそらくパラメータとしての* * structタグ*は間違っているでしょう。 –
ああ、二重アンダースコア( '__')を使用してインクルードガードを開始しないでください。これは実装に予約されています。 'REG_H'か多分' REG_H_'を使うだけです。 –
@FelixPalmen表示されているコードはあなたの(そうでなければ適用可能な)コメントから変更されていますか?少なくとも私はstructタグをパラメータとして見ることはできません。 – Yunnosch