割り込み関数の中でswitch文を書いたら、
switch文の制御式の変数に、以下の警告が出たのですが、どう直せばいいのでしょうか。
W0520546:初期化されないパスがあります。:種別"シンボル名"(宣言位置 行行番号)
開発環境はe2studio v6.30で、使用マイコンはRX231です。
C言語の教科書を読むと、学習に重きを置いていているPASCALに対して、もっと実用的であることを印象付けた言語であることが書かれてます。その中の具体例として、「宣言と初期化が同時にできる」とか、「必要な時に変数の定義ができる」があります。
for(int i=0;・・・・
などが具体例として紹介されます。ここでは条件文の中で初期化付きの変数定義があることの是非になります。
switch (i){ ・・・・ case 1: int j=0;break; ・・・・ }
はリスクがありそうですが言語仕様で否定してしまうと、根本的なC言語を否定してしまうことになります。開発ツールでのエラーやワーニングにするか、それぞれのプログラマ側のガイドラインにするかになります。まずは、ユーザーの意見を集めて開発ツールでの扱いをルネサスが決めることになります。いずれにしても開発ツールでの扱いが明確でなく、その時々で変化するのはバグと言って良いと思います。そのような視点でこのスレッドは非常に良い書き込みだと感じます。
IKUZOさんほやです。
以下、本題に関係ない投稿画面の豆知識:
> rich formattingでもインデントが付きませんね> NoMaYさんはどうされて、あんなに綺麗に表示されるのでしょうか
rich formattingで編集する時、View -> Show blocks でブロック枠を表示しておき、ソースコードを書いた箇所のブロックを Formats -> Blocks -> Pre にするとそのブロックに <pre>タグが付いてインデントが有効になります。
int myfunc( void ){ /* TABコードでインデント */ return 0;}
もっと激しく(?)やりたいなら、Tools -> Source Code でHTMLの記述を好きなように...
toy_smさんすいません、
「本題に関係ない投稿画面の豆知識:」で
ほやさんありがとうございます、
rich formattingで編集する時、
1.View -> Show blocks でブロック枠を表示 2.ソースコードを書いた箇所のブロックを Formats -> Blocks -> Pre にする
ブロックに <pre>タグが付いてインデントが有効になります。
int var=0;void interrupt(void){ switch(var){ case 0: var=1; break; case 1: var=2; break; case 2: var=0; break; default: var=0; break; }}</pre>にすれば元に?タブは入力できませんね、勉強すれば自由にできるようにしてあるということなんですね、ヘルプを読まないといけないということですかね。
> にすれば元に?タブは入力できませんね、HTMLのタグなのでタグ自体は見えません。御自分の投稿を編集モードで Tools->Sourceで改めて表示して見れば意味が解ると思います。
ほやさん
すいません
NoMaYさんの
の投稿見てましても、<pre>タグを終了するというのは
多分できない仕様なんでしょうか?
ソース行が大抵後の方になってますね
投稿する前にhtmlのテキスト編集ができたりすると、
便利になるかもですね
セキュリテイ的にしない方が良いのでしょうね
テキスト挿入という機能は申し分ないのですが
日本語が文字化けますね、
グローバルですから英語になっているのでしょうね
これぐらいで、いろいろ、
余分なことでご迷惑おかけいたしました。
IKUZOさん、こんにちは。NoMaYです。続きは、新しく立てたスレッドがありますので、そちらでどうでしょうか、、、