マイコンソフト 悩み事相談室 3 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
.
∧ ∧
( ´・ω・) < コンフィグって何? 昆布なら知ってる。 ボラチルって何? ボラは魚だよ。
( ∪ ∪ ,.-、 ,.-、 ,.-、 ,.-、
と__)__) (,,■) (,,■) (,,■) (,,■)
PIC AVR H8 ARM
学校でC言語を習ったことがあるので「楽勝でしょ」って、マイコンを始めたけど、
わからないことだらけ。誰か教えて!
PCとは別世界の、マイコンのソフト。難しいよね。
ツールの使い方、ツールの設定、マイコン特有のC言語の書き方、
「デバッグモードにプログラミングモード。何?」 Eclips, Emacs って何?
VBAしか知らないよぉ、という人まで、
各社マイコンに関するマイコンソフト相談室です。
質問者は、「初心者質問スレ」の>>1を見て、分かり易く質問を書いてね。
回答者は、威張らない、バカにしない、言葉使い注意で、親切に教えてあげてね。
あっ、そうそう。
ハードウェアに関する質問は、それぞれのマイコンのスレに、達人がいるから。
過去スレ
1 2014/09/11〜
2 2016/07/31〜 http://rio2016.2ch.net/test/read.cgi/denki/1469905691/l50
では、質問、ドゾ〜 >>248
ま、自分がそれで気が済むならいいんじゃないかな。
見ている他人が、あなたのIDに何か語りかけようとは思わないだろうってだけ。
とても嫌な感じだから。
気づいてるだろうけど、各所のあなたのレス、現に全く他人から引用されてないよね。
内容が陳腐なせいもあるかもしれないけど。 >>76
昔の書き方だと { の前に引数の変数宣言入れる。 マイコンってCでしかメモリ容量的に無理だとおもってたんだが、もっぱらC++使って
る人いる?
メモリーの問題だと思うが、どの程度メモリー積んでればC++使った方がいいんだろ。
C++で書けたら楽だものな。 >>251
「動的にオブジェクトのnew/deleteをしないとC++じゃない」という前提でもなくて、
静的にクラスを使うだけでも記述する上で便利だ、ということなら、ArduinoだってC++使ってますし。 そういうことなんだね。例えば関数内でNewする場合(動的)にはやはり普通の変数と同じで
スタックに積むのだろうね。そうするとコツとしてはスタックエリアをかなり確保しておくべきなんだろうね。
8kbのラムの場合はスタチック変数1kb+スタック8kbとかにするんだろうか?
mbed
M0 32Kb,8Kb
M3 512kB,32kB
M0はC++できる?(無理っぽい気がする。)
M3でもRamが少ないよな。こんなしょぼいのでC++つかえるのか? >>254
>例えば関数内でNewする場合(動的)にはやはり普通の変数と同じでスタックに積むのだろうね。
ClassAクラスのコンストラクタで中で、動的メモリの確保はしていないという条件で。
(1)はオブジェクトの実体がスタックに置かれる。
(2)のようにnewしたら、スタックにはオブジェクトのポインタだけが置かれる
オブジェクトの実体はヒープに置かれる。この場合は(3)のようにdeleteしないとメモリリークする。
じゃなかったっけ。今はスマートポインタを使うのかな。
void foo(void)
{
ClassA a; //(1)
ClassA* pa = new ClassA; //(2)
:
:
delete pa; //(3)
}
メモリ管理の実装で違ってくるのかな? >>255の続き
(1)のように、クラスの実体をスタックに置く(置いているのかな)とか、
(2)(3)の場合でもnew-deleteがそのときどきできっちり対になってるとか、
プログラムの最初の方に、EEPROMから得た設定データをもとに、
どかんとクラスの配列をnewしてあとはそのまま使うような場合なら
C言語で構造体を扱うのと、さほど変わらんのではないかと思います。
でも、C++の匠は、いろいろなサイズのクラスをnewしたりdeleteしたり、またnewしたりと
ガンガンやりますよね。虫食いだらけになって辛いかな。
そういえば、昔の携帯のJavaのプログラミングで、同僚から、
「オブジェクトは最初に確保してそのあとはずっとそれを使う。メモリ貧弱だし」
って聞いたことがあります。似ているかも。 >>251
コンパイルはパソコンでやるから、問題ない。
ただし、小規模のソフトをC++化しても、めんどくさいだけな気がする。 >>251
コンストラクタ、デストラクタ、テンプレート、デフォルト引数
これだけでも使う価値がある
new / delete はアドレス変換の無い小規模マイコンでは基本使わない
使うとしたら起動時にnewだけ 組み込みだと、グローバルなクラスのコンストラクタが呼ばれるように自分でしなきゃならないことがあるので注意
Cからも呼ばれる事がある関数のヘッダをC/C++両対応にするのがちょっと面倒
Cが絶滅出来れば良いけど、なかなかそうも行かない 教えてください。
#define LED_ON 1
#define LED_OFF 0
上記は、
#define で、1つの単語
LED_ON で1つの単語
1 で1つの単語だと思います。
本の雑誌などのサンプルプログラムで、
#define AAA BBB CCC というのを見ました。
この場合、「AAA」 を「BBB CCC」に置き換える
ということでしょうか?
つまり、
置き換えられる1つ目は「必ず1ワード」だけですが、
置き換える文字は「2つ目以降改行までスペースを含めて全部」
という理解で正しいでしょうか? >>261
処理系によって違うかもしれない
試して見りゃいいじゃんか目の前に箱あるんだろ?
1.AAAがBBB CCCに変換される
2.プリプロセッサがエラー吐く
3.CCCが無視される(warningが出る)
さあ、どれだった? そもそも複数行に展開されるマクロとかも定義できるから
> 置き換える文字は「2つ目以降改行までスペースを含めて全部」
と言う理解は正しくない >>264
基本は行末まで。
¥で連結すれば、複数行にまたがって記述可能だが。 >>266
連結するということは、一行扱いにすると言うこと。 >>267
¥があっても行末は行末
それをどう解釈するかはプロセッサの仕様の話 > 置き換える文字は「2つ目以降改行までスペースを含めて全部」
の中の「改行」は末尾の「\」による「テキストファイル上の改行」を「ソースの解釈の上での改行」に含まない表現ではないの?
その解釈で>>267の発言だと思う。
「\」を含めた話をするときは、行末、改行は混乱を招きやすい。相手がどっちの意味で話をしているかはわかると思う。 >>269
> の中の「改行」は末尾の「\」による「テキストファイル上の改行」を「ソースの解釈の上での改行」に含まない表現
とか言うオレオレ解釈を力説されてもな w >>268
#define 自体がプリプロセッサの機能だし。
それを言い出したら、
やってみなければわからん
としか言えない。 >>271
特定の環境の話でないなら規格準拠が前提だと思うが? >>271はプリプロセッサは規格にのっとった動作するのだから、と>>268に批判的に見える。
>>272は>>268は規格準拠を前提にした話であるような言いかた。
「それをどう解釈するかはプロセッサの仕様の話」
とだけ聞けば、客観的には「プロセッサの動作にはいろいろあって解釈もまちまち」が前提になるだろね。
>>268が規格準拠を前提にした発言だとしたら、意図が読めない。
「それをどう感じるかは人次第」なんて話で、「誰もが同じ解釈をすることが前提」とは普通は考えないよね。 >>273
> 「それをどう解釈するかはプロセッサの仕様の話」
「ソースの行」の話と「行を連結して一行に解釈」話を分けて考えろ
って話
> 「それをどう感じるかは人次第」なんて話で、「誰もが同じ解釈をすることが前提」とは普通は考えないよね。
そりゃ
> 「それをどう解釈するかはプロセッサの仕様の話」
って書いてあって「それをどう解釈するかはプロセッサ次第」って書いてないからな
これが同じ文だと思うならちょっと注意力が無さすぎ >>274
>「ソースの行」の話と「行を連結して一行に解釈」話を分けて考えろ
その表現でいいと思います。 今のは知らないですが、「プログラミング言語C 第2版」(古い)では、
\での連結のことを「行の併合」って表現してますね。 >>275
なるほど、壊滅的に話の流れを読む能力がないのな w >>277
無用に相手を挑発せずに、すりあわせて意見の一致を探す方が有益ですよね? やって見りゃすぐ済む話を延々と・・・
不毛な非生産的な話が続くなぁ
最初の質問者は試しにやってみたのかよ
使った処理系と、結果書けよ まあでも自分には、丸々行末までと置き換えるっていう知識はなかったから
参考にはなったかな コメントは除去される
(空白1個が残るかのごとく、コメントの前後は連結はされない。
大昔は連結され…るような処理系もあった) >>283
言えてる。
#defineなんて、ON 1 とか true 1 とかしか知らなかったよね。 ABS(x) ((x)>=0?(x):(-(x))) くらいは知ってるやろ 安易にSWAP(x,y)を作ってはまるのは、定番の教科書ネタですね。 y = ABS(x++)
とかやってはまるのも追加で #define hoge(X) X
と
#define hoge(X)
とを切り替えて、デバッグ用の文を入れ外しするよ。
例えば、
hoge(printf("DEBUG\n"));
とかやれば、#ifdefで書くよりも行数少なくエレガント define いいけど、行末の ; を付けてしまうとエラーにならない? if(0){}ってのを見てなるほどといたく感心したことがある。 do{ }while(0)やif(0){}でくくるのは
構文解析されるがそれはメリットデメリット両面ある
あまり入り組んだことせずに#if 0〜#endif 使った方が意図が明瞭でいいな >>292と>>293は目的が違うんだが
if (0)
#if 0
この2個は場合によって使い分ける マクロ展開して結果的にif (0)になるケースがあるねん コンパイルのチェックを通したい場合と通したくない場合 今時、こういう事を言う人がいるかどうか分からないけど
/* */とか#if0でコメントアウトすると、元のコードとオブジェクトの出力が違うから
新たなバグ発生(というか、本当は元々あったバグの生じる現象が違うだけだが)
する可能性があるから、ダメだと言う人がいる
if (0) でも、コンパイラ&最適化設定によっては同じなんだけど
バカと議論しても時間のムダなんで、そうしろって言うんだったらそうするしかないよな で、もう少し前向きの話をすると、if(0)とかするからコンパイラが最適化しちゃうんで
if(var1)としておいて、main()かどこかで var1=0; ってしておけば、今のところ
それに気づいて最適化するようなコンパイラはいないと思う マイコンじゃないけどVC++6.0で
int i;
…
for (int i = 0; ; ) { }
とやるとiが二重定義エラーになるのを避けるためにファイルの先頭に
#define for if(0); else for
と書いてたのを思い出した。 そういや組込みソフト屋のここの人達はエディタ何使ってる?
俺は秀丸で、職場の周りの人も秀丸ばかりw 大昔はMIFES、windowsになって似た感覚で使えるの探して秀丸購入。
MIFESの値上がりに愛想つかしてそれっきり。
秀丸はユーザーの声を反映したバージョンアップがうまいと個人的に思う。 20年前に買ったライセンスで動かす秀丸手放せないな ただバイナリモードはスターリングに慣れてるので使ったことないw
いいきっかけ貰った。使い心地試してみるよ。 秀丸今も儲かってんのかな
どっかの法人が定期的に買ってるとか? 私はWZ。
DOS時代にMIFESからVZに移行して、以後、何となぁくの流れでWZに。 IDEエディタだと狭くない? カスタマイズもできないし
おせっかい機能は便利かウザいか人それぞれだが
自分は以前MIFES、今sakura
秀丸は何となく好きになれない >>311
昔、Sakuraエディタを好きで使ってたけど、内部Shift-JISだったせいで、
Unicode編集が必要になったときに離れてしまっていた。
Wikipedia を見たら、2011年に Unicode版が出てたのですね。
コーディングは各社IDEですけど、それ以外でテキストファイルを扱うことは多いので、
Sakuraエディタもチェックしてみよう。 やっぱり秀丸でしょう
検索文字列のハイライトが、ずっと消えずに残っていてくれるのは、たまらない。
ただ、矩形カット&ペーストなど 矩形領域で編集出来ないのが残念。
MIFESは出来た(と記憶) >>314
秀丸で矩形コピーできるよ。あんまり使わないけど。 多くのIDEでそれができないから秀丸をサブエディタとして使っている俺
MIFES時代から矩形編集使いまくってた 秀丸自体にファンクションキーをMIFES風にする定義ファイル入ってるよ そういえばWZエディタのキー入力定義ファイルをVZ風からWindows風に変えたら、
スムーズに操作できなくなってビックリしたことがあった。
テキスト入力中のキー操作なんてほぼ無意識のうちにやってるんだね。 IDEっていえばなんらかのプログラミングの話だと思うのですが、
どんな場合に矩形編集が便利に使えるのですかね…。 >>320
各行末にコメントを入れている場合、
コメント以外を選択したとき
コメント位置にタブを挿入したい時 >>321
> 各行末にコメントを入れている場合、
老害の典型 インデント揃えるために100行くらいまとめてタブ挿入するとか
改行入れたテーブルデータをブロックで抜き出すとか
ぱっと出てこないけど、使いこなしているが故に出来ないとストレスなんだよね。 思い付きの一例だから突っ込まんでくれw
要望がそれなりにあるからこそ、そんな機能が有るんだろうくらいで。 >>322
全ての行に意味のないコメントを書くヤツがいたなあ
普通にテーブルとかで複数行揃えてコメント書く場合はあるよな
複雑な編集だと秀丸を使ったり、
場合によってはエクセルとかツール作ったりとか マイコン関係のIDEがだいたいWindowsだから >>323
整形ツールあるよね。客先の指定で使ったり使わなかったりで、使わないことのほうが多いけど。 めんどいからforの中とかifブロックの中で揃ってればいいや >>322
普通は、どうやってコメントを入れるの? >>331
ボッチでプログラム書いてるなら
プログラム コメント 書き方
とかでググってテキトーに決めればいい
チームでプログラム作ってるならそのチームのやり方に従え >>332
>>331はコメントの入れ方の一般論を尋ねているのではなかろ。
各行末にコメントを入れることについて「老害の典型」と言ってる>>322に実践している方法を尋ねているのではないか? >>333
ひょっとして「普通は」の意味がわかってないの? >>335
「普通」を個人に対して尋ねているときは、「その個人が普通だと思っていること」を尋ねているだろね。 納品するプログラムだと未だにステップ数換算とかあるから、コメントも1ステップ扱いされるんで、全行末にコメントあったりするねぇ。
そんな時は、矩形選択が便利やねぇ。
それにしても、納品先はどう考えてるのやら… >>333
はい、その通りです。
言い方を変えると「じやあ、どんな入れ方が良いと言うんだ?」ということです。 欲しいのはコメントでもプログラムそのものでもねーよ
とか思ってたりしてw >>337
いまだにコメントまでお金を取る所があるのか
契約内容を見直した方が良いんじゃない? >>338, >>340
だからググれば色々出てくるだろ
自分がよいと思う奴を採用すればいい
俺のところのやり方がお前に合うかどうかは知らんし、下らんいちゃもんつけられても困るし >だからググれば色々出てくるだろ
>自分がよいと思う奴を採用すればいい
>>338、>>340を読んでないな。
読めばそのレスが的外れなのはわかるだろう。
>>342ではなく、>>322のやり方を聞いているって書いてあるのに。
>>322がなんなりと書けば、それなりにいちゃもんが付く可能性もある。
そりゃそうだ。他人の流儀を「老害の典型」なんて批判するぐらいだ。
よほど立派な流儀でなければ、お前が言うか、って言われて当然だと>>342だって思うだろ?
しかし、こういうことは回避策もあるのにな…。 よほど立派な流儀でなければ、お前が言うか、って言われて当然だと ID:Ra0M84o4 だって思うだろ? いちゃもん付けるだけで、自分の意見があるわけじゃなさそう。
追い詰めても、何も出まい。 老害はしつこい w
そんなアホレス返す前にググって自分に合うコメントの入れ方見つけりゃいいのに >>322
では、どのようなコメントの入れ方なら良いのでしょうか?
教えてください ■ このスレッドは過去ログ倉庫に格納されています