#defineで定義した値を取得
-
777
#defineで定義した値を取得
分類:[C/C++]
#define AAA 1
#define BBB 2
#define CCC 3
u_char tble[3] = { AAA, BBB, CCC};
for(i = 0; i <= 3; i++){
num= tble;
printf(num);
}
#defineで定義した値をAblockに代入したい場合はどうすればいいですか??
上記のように作ってみたのですが、上手くいきません。ご助力お願いいたします。
#define AAA 1
#define BBB 2
#define CCC 3
u_char tble[3] = { AAA, BBB, CCC};
for(i = 0; i <= 3; i++){
num= tble;
printf(num);
}
#defineで定義した値をAblockに代入したい場合はどうすればいいですか??
上記のように作ってみたのですが、上手くいきません。ご助力お願いいたします。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: #defineで定義した値を取得
これ、どんな風にうまく動きませんでしたか?
配列の添え字と配列の定義の理解に怪しい部分が見受けられますが。
あとprintfの使い方とか。
どんな入門書やサイトで勉強されているのでしょうか?
配列の添え字と配列の定義の理解に怪しい部分が見受けられますが。
あとprintfの使い方とか。
どんな入門書やサイトで勉強されているのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
777
Re: #defineで定義した値を取得
>配列の添え字と配列の定義の理解に怪しい部分が見受けられますが。
>あとprintfの使い方とか。
⇒ すみません。printfとかは気にしないでください。ただ、#defineで定義した値をnumに代入したいだけなので・・・。
配列の定義は何がおかしいでしょうか?
>あとprintfの使い方とか。
⇒ すみません。printfとかは気にしないでください。ただ、#defineで定義した値をnumに代入したいだけなので・・・。
配列の定義は何がおかしいでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: #defineで定義した値を取得
定義は合ってますが、参照では間違ってます。777 さんが書きました:配列の定義は何がおかしいでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
777
Re: #defineで定義した値を取得
⇒ では、どのように参照すればよいでしょうか?softya(ソフト屋) さんが書きました:定義は合ってますが、参照では間違ってます。777 さんが書きました:配列の定義は何がおかしいでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: #defineで定義した値を取得
u_char tble[3]の宣言をされた配列の参照時の添字は0~2です。
ですが、このプログラムはループ時にtble[3]を参照していますので、これは配列外の参照を意味しますね。
ここで異常終了するか、変な値を参照することになります。
ですが、このプログラムはループ時にtble[3]を参照していますので、これは配列外の参照を意味しますね。
ここで異常終了するか、変な値を参照することになります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
777
Re: #defineで定義した値を取得
⇒ ありがとうございます。softya(ソフト屋) さんが書きました:u_char tble[3]の宣言をされた配列の参照時の添字は0~2です。
ですが、このプログラムはループ時にtble[3]を参照していますので、これは配列外の参照を意味しますね。
ここで異常終了するか、変な値を参照することになります。
For文の間違いはわかりましたが、配列の定義時に「invalid initializer」と出てきますが、これはどういうエラーなのでしょうか?
Re: #defineで定義した値を取得
Ablockってなんですか?777 さんが書きました:#defineで定義した値をAblockに代入したい場合はどうすればいいですか??
どんなプログラムでそのエラーがでるのか、全部載せてもらえますか?
例えば、次のプログラムなら動きます。
non
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: #defineで定義した値を取得
自体に間違いはありません。
コンパイルも通ります。
もし間違いあるとしたら、この行以前だと思いますのでコンパイルして問題が出る形で掲載して貰う必要があります。
もし全体を掲載できないのならエラーを再現できるコンパクトなコードを作ってみてください(その過程で問題が解決するかも知れませんが)。
コンパイルも通ります。
もし間違いあるとしたら、この行以前だと思いますのでコンパイルして問題が出る形で掲載して貰う必要があります。
もし全体を掲載できないのならエラーを再現できるコンパクトなコードを作ってみてください(その過程で問題が解決するかも知れませんが)。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
777
Re: #defineで定義した値を取得
>Ablockってなんですか?non さんが書きました:Ablockってなんですか?777 さんが書きました:#defineで定義した値をAblockに代入したい場合はどうすればいいですか??
どんなプログラムでそのエラーがでるのか、全部載せてもらえますか?
例えば、次のプログラムなら動きます。
すみません。numのことです。元はAblockで書いていましたので・・・。
エラーは、配列の設定時に「invalid initializer」ってでるだけです。
Re: #defineで定義した値を取得
私が、添付したプログラムでも、そのエラーが出るのですね。
コンパイラ等の環境は何ですか?
いきなり、u_char なんて使ってあるから、特殊なものだと思いますが。
コンパイラ等の環境は何ですか?
いきなり、u_char なんて使ってあるから、特殊なものだと思いますが。
non
-
777
Re: #defineで定義した値を取得
⇒ 会社で使っているものなので何なのかはわからないです;;non さんが書きました:私が、添付したプログラムでも、そのエラーが出るのですね。
コンパイラ等の環境は何ですか?
いきなり、u_char なんて使ってあるから、特殊なものだと思いますが。
nonさんからいただいたものは動いています。でも、私のは動かないです;;
defineがヘッダファイルで定義しているとかは関係ないですよね?
Re: #defineで定義した値を取得
それじゃ、動かないプログラムを載せてもらわないとわかりません。777 さんが書きました: nonさんからいただいたものは動いています。でも、私のは動かないです;;
短いテストプログラムにして載せてください。
ヘッダに定義しても大丈夫です。777 さんが書きました:
defineがヘッダファイルで定義しているとかは関係ないですよね?
non
-
777
Re: #defineで定義した値を取得
#defien AA //← 変動します
#defien EE //← 変動します
#defien II //← 変動します
u_char 1tble[3] = { AA, EE, II }; // ←この時点で「invalid initializer」
void disp_standerd(void)
{
u_char i ;
u_char num;
for(i = 0; i < 3; i++){
num = 1tble[i];
printf("%d",num)
}
} 短いテストプログラムにして載せてください。
⇒ こんな感じです。かなり端折っていますので、動かないしれないです。
#defineは機器の設定によって変動します。
Re: #defineで定義した値を取得
私としては、そのエラーが出るプログラムを載せて欲しかったのですが。777 さんが書きました: ⇒ こんな感じです。かなり端折っていますので、動かないしれないです。
#defineは機器の設定によって変動します。
よくわからないのは
>#defineは機器の設定によって変動します
これわからないです。ソースコードは添付のように空白ですか?それなら、無理です。
それとも、具体的な数値を機器の設定のたびに手動で記入し、コンパイルをしますか?
それなら、可能です。
non
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: #defineで定義した値を取得
すくなくとも、このままだと「invalid initializer(無効な初期化子)」に成るんじゃないでしょうか。#defien AA //← 変動します
#defien EE //← 変動します
#defien II //← 変動します
#defineの値はコンパイル前に決める必要があるので、どうやって変動させているか疑問ですし。
機器の設定ってのがコンパイル前ならOK。コンパイル後の動的な変化ってことならば不可能としか言えません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- bitter_fox
- 記事: 607
- 登録日時: 15年前
- 住所: 大阪府
-
777
Re: #defineで定義した値を取得
softya(ソフト屋) さんが書きました:すくなくとも、このままだと「invalid initializer(無効な初期化子)」に成るんじゃないでしょうか。#defien AA //← 変動します
#defien EE //← 変動します
#defien II //← 変動します
#defineの値はコンパイル前に決める必要があるので、どうやって変動させているか疑問ですし。
機器の設定ってのがコンパイル前ならOK。コンパイル後の動的な変化ってことならば不可能としか言えません。
#defineは、何らかの値を機器を動かしているときに変更するので、普通の環境ではできないと思います。
上記ソースは、変化があるので空白としておきました。本来は、設定の何らかの値が常に入力されています。
不可能でしたら、他の方法でやります。ありがとうございました。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: #defineで定義した値を取得
機器(マイコン?)が動いているときに変化する情報なのであれば配列の初期化子にすることは出来ません。777 さんが書きました:#defineは、何らかの値を機器を動かしているときに変更するので、普通の環境ではできないと思います。
上記ソースは、変化があるので空白としておきました。本来は、設定の何らかの値が常に入力されています。
不可能でしたら、他の方法でやります。ありがとうございました。
変化する度に配列に動的に代入してください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。