マイコンソフト 悩み事相談室 3 [無断転載禁止]©2ch.net

1774ワット発電中さん2017/06/19(月) 02:24:24.69ID:mEcw5Uka
.
  ∧ ∧    
  ( ´・ω・) < コンフィグって何? 昆布なら知ってる。  ボラチルって何? ボラは魚だよ。
  ( ∪ ∪   ,.-、     ,.-、   ,.-、     ,.-、
  と__)__)  (,,■)   (,,■)  (,,■)   (,,■)
         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

  では、質問、ドゾ〜

241774ワット発電中さん2018/01/18(木) 08:22:08.64ID:/eafo2/P
222が書いてるような事がまだ起こる気配すらないのに先回りして心配してるとか暇な人たちですね。

242774ワット発電中さん2018/01/18(木) 11:46:47.18ID:Cik5tHIj
>>241
コードの自動生成は、ルネサスの開発環境でもガンガン行われているけど、
「気配もない」んですか?

243774ワット発電中さん2018/01/18(木) 12:18:04.06ID:/eafo2/P
222の後半について、な。

244774ワット発電中さん2018/01/18(木) 14:01:04.78ID:k0pK3k5+
>>238
何の前触れもなくいきなり冒頭で
>>226
>「ダウンロード」はマイコンへの書込みの意味ですかね。
とレスしておきながら、
>「想像、印象、心象」の意味で使いました。
と言い訳して済まされるなら、何書いてもOKってことになる。
それがあなたのよく言う、IDを連続させる意義、ですかね?

245774ワット発電中さん2018/01/18(木) 14:35:06.85ID:kPoxq2mH

246774ワット発電中さん2018/01/18(木) 17:05:02.29ID:g9E6B8Oz
嫁を全力で叩こうとする信者たちww
みっとも無いな

247774ワット発電中さん2018/01/18(木) 19:46:23.04ID:mahxzjdy
>>242
気配を感じることが出来ない人は「気配がない」んだろうね。

248774ワット発電中さん2018/01/18(木) 22:45:54.26ID:4O0LDm7I
>>244
そもそもレスを読めていない。部分引用して曲解する悪意はないと信じてる。出直してきて。
ただし、ここは国語のスレじゃないから、俺がその部分に付き合うかどうかは俺が決めます。
付き合わない。

249774ワット発電中さん2018/01/19(金) 00:07:39.42ID:d9FLaeSy
>>248
ま、自分がそれで気が済むならいいんじゃないかな。
見ている他人が、あなたのIDに何か語りかけようとは思わないだろうってだけ。
とても嫌な感じだから。
気づいてるだろうけど、各所のあなたのレス、現に全く他人から引用されてないよね。
内容が陳腐なせいもあるかもしれないけど。

250774ワット発電中さん2018/01/19(金) 11:07:18.95ID:t3z0UFLr
>>76
昔の書き方だと { の前に引数の変数宣言入れる。

251774ワット発電中さん2018/01/20(土) 09:40:34.78ID:Xpmx9N6N
マイコンってCでしかメモリ容量的に無理だとおもってたんだが、もっぱらC++使って
る人いる?
メモリーの問題だと思うが、どの程度メモリー積んでればC++使った方がいいんだろ。
C++で書けたら楽だものな。

252774ワット発電中さん2018/01/20(土) 09:48:54.23ID:K6wdIRUV
mbedのmainはcppですわ

253774ワット発電中さん2018/01/20(土) 09:58:13.57ID:EWKbP6f/
>>251
「動的にオブジェクトのnew/deleteをしないとC++じゃない」という前提でもなくて、
静的にクラスを使うだけでも記述する上で便利だ、ということなら、ArduinoだってC++使ってますし。

254774ワット発電中さん2018/01/20(土) 10:10:27.22ID:Xpmx9N6N
そういうことなんだね。例えば関数内でNewする場合(動的)にはやはり普通の変数と同じで
スタックに積むのだろうね。そうするとコツとしてはスタックエリアをかなり確保しておくべきなんだろうね。
8kbのラムの場合はスタチック変数1kb+スタック8kbとかにするんだろうか?

mbed
M0 32Kb,8Kb
M3 512kB,32kB
M0はC++できる?(無理っぽい気がする。) 
M3でもRamが少ないよな。こんなしょぼいのでC++つかえるのか?

255774ワット発電中さん2018/01/20(土) 10:46:40.02ID:EWKbP6f/
>>254
>例えば関数内でNewする場合(動的)にはやはり普通の変数と同じでスタックに積むのだろうね。

ClassAクラスのコンストラクタで中で、動的メモリの確保はしていないという条件で。

(1)はオブジェクトの実体がスタックに置かれる。

(2)のようにnewしたら、スタックにはオブジェクトのポインタだけが置かれる
オブジェクトの実体はヒープに置かれる。この場合は(3)のようにdeleteしないとメモリリークする。

じゃなかったっけ。今はスマートポインタを使うのかな。


void foo(void)
{
ClassA a; //(1)
ClassA* pa = new ClassA; //(2)
:
:
delete pa; //(3)
}

メモリ管理の実装で違ってくるのかな?

256774ワット発電中さん2018/01/20(土) 10:57:44.10ID:EWKbP6f/
>>255の続き
(1)のように、クラスの実体をスタックに置く(置いているのかな)とか、
(2)(3)の場合でもnew-deleteがそのときどきできっちり対になってるとか、
プログラムの最初の方に、EEPROMから得た設定データをもとに、
どかんとクラスの配列をnewしてあとはそのまま使うような場合なら
C言語で構造体を扱うのと、さほど変わらんのではないかと思います。

でも、C++の匠は、いろいろなサイズのクラスをnewしたりdeleteしたり、またnewしたりと
ガンガンやりますよね。虫食いだらけになって辛いかな。

そういえば、昔の携帯のJavaのプログラミングで、同僚から、
「オブジェクトは最初に確保してそのあとはずっとそれを使う。メモリ貧弱だし」
って聞いたことがあります。似ているかも。

257774ワット発電中さん2018/01/20(土) 11:37:33.83ID:sjyvo2/a
>>251
コンパイルはパソコンでやるから、問題ない。
ただし、小規模のソフトをC++化しても、めんどくさいだけな気がする。

258774ワット発電中さん2018/01/20(土) 12:29:02.91ID:HEhxObqm
>>251
コンストラクタ、デストラクタ、テンプレート、デフォルト引数
これだけでも使う価値がある

new / delete はアドレス変換の無い小規模マイコンでは基本使わない
使うとしたら起動時にnewだけ

259774ワット発電中さん2018/01/20(土) 12:37:31.74ID:HEhxObqm
組み込みだと、グローバルなクラスのコンストラクタが呼ばれるように自分でしなきゃならないことがあるので注意

Cからも呼ばれる事がある関数のヘッダをC/C++両対応にするのがちょっと面倒
Cが絶滅出来れば良いけど、なかなかそうも行かない

260774ワット発電中さん2018/01/20(土) 13:13:12.44ID:K6wdIRUV
extern "C"は魔法の言葉

261774ワット発電中さん2018/02/15(木) 13:10:47.45ID:JQ4h6iRH
教えてください。

#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つ目以降改行までスペースを含めて全部」
という理解で正しいでしょうか?

262774ワット発電中さん2018/02/16(金) 23:15:26.66ID:2YWfN3pI
>>261
処理系によって違うかもしれない
試して見りゃいいじゃんか目の前に箱あるんだろ?
1.AAAがBBB CCCに変換される
2.プリプロセッサがエラー吐く
3.CCCが無視される(warningが出る)
さあ、どれだった?

263774ワット発電中さん2018/02/17(土) 00:58:26.23ID:aEG5HgQm
1.

264774ワット発電中さん2018/02/17(土) 07:49:12.63ID:SgbU1E6Z
そもそも複数行に展開されるマクロとかも定義できるから
> 置き換える文字は「2つ目以降改行までスペースを含めて全部」
と言う理解は正しくない

265774ワット発電中さん2018/02/17(土) 09:22:46.05ID:dhX5LMHE
>>264
基本は行末まで。
¥で連結すれば、複数行にまたがって記述可能だが。

266774ワット発電中さん2018/02/17(土) 09:32:29.48ID:SgbU1E6Z
そんなことはわかってるけど?

267774ワット発電中さん2018/02/17(土) 09:35:47.50ID:dhX5LMHE
>>266
連結するということは、一行扱いにすると言うこと。

268774ワット発電中さん2018/02/17(土) 09:51:21.52ID:SgbU1E6Z
>>267
¥があっても行末は行末
それをどう解釈するかはプロセッサの仕様の話

269774ワット発電中さん2018/02/17(土) 11:12:09.98ID:b3vSYT5L
> 置き換える文字は「2つ目以降改行までスペースを含めて全部」
の中の「改行」は末尾の「\」による「テキストファイル上の改行」を「ソースの解釈の上での改行」に含まない表現ではないの?
その解釈で>>267の発言だと思う。

「\」を含めた話をするときは、行末、改行は混乱を招きやすい。相手がどっちの意味で話をしているかはわかると思う。

270774ワット発電中さん2018/02/17(土) 11:38:33.46ID:LEV7HgfN
>>269
> の中の「改行」は末尾の「\」による「テキストファイル上の改行」を「ソースの解釈の上での改行」に含まない表現
とか言うオレオレ解釈を力説されてもな w

271774ワット発電中さん2018/02/17(土) 11:53:24.79ID:nmwCpv9a
>>268
#define 自体がプリプロセッサの機能だし。
それを言い出したら、
 やってみなければわからん
としか言えない。

272774ワット発電中さん2018/02/17(土) 12:05:13.98ID:LEV7HgfN
>>271
特定の環境の話でないなら規格準拠が前提だと思うが?

273774ワット発電中さん2018/02/17(土) 16:41:38.11ID:b3vSYT5L
>>271はプリプロセッサは規格にのっとった動作するのだから、と>>268に批判的に見える。
>>272>>268は規格準拠を前提にした話であるような言いかた。

「それをどう解釈するかはプロセッサの仕様の話」
とだけ聞けば、客観的には「プロセッサの動作にはいろいろあって解釈もまちまち」が前提になるだろね。
>>268が規格準拠を前提にした発言だとしたら、意図が読めない。

「それをどう感じるかは人次第」なんて話で、「誰もが同じ解釈をすることが前提」とは普通は考えないよね。

274774ワット発電中さん2018/02/17(土) 17:09:57.03ID:SgbU1E6Z
>>273
> 「それをどう解釈するかはプロセッサの仕様の話」
「ソースの行」の話と「行を連結して一行に解釈」話を分けて考えろ
って話

> 「それをどう感じるかは人次第」なんて話で、「誰もが同じ解釈をすることが前提」とは普通は考えないよね。
そりゃ
> 「それをどう解釈するかはプロセッサの仕様の話」
って書いてあって「それをどう解釈するかはプロセッサ次第」って書いてないからな
これが同じ文だと思うならちょっと注意力が無さすぎ

275774ワット発電中さん2018/02/17(土) 17:58:42.78ID:b3vSYT5L
>>274
>「ソースの行」の話と「行を連結して一行に解釈」話を分けて考えろ
その表現でいいと思います。

276774ワット発電中さん2018/02/17(土) 18:02:09.36ID:b3vSYT5L
今のは知らないですが、「プログラミング言語C 第2版」(古い)では、
\での連結のことを「行の併合」って表現してますね。

277774ワット発電中さん2018/02/17(土) 18:14:10.17ID:SgbU1E6Z
>>275
なるほど、壊滅的に話の流れを読む能力がないのな w

278774ワット発電中さん2018/02/17(土) 18:28:24.37ID:b3vSYT5L
>>277
無用に相手を挑発せずに、すりあわせて意見の一致を探す方が有益ですよね?

279774ワット発電中さん2018/02/17(土) 18:38:56.06ID:SgbU1E6Z
ここは日本語の勉強する場じゃないから

280774ワット発電中さん2018/02/17(土) 18:44:20.92ID:b3vSYT5L
日本語の行き違いに拘ることもないですね。

281774ワット発電中さん2018/02/17(土) 19:19:14.52ID:SgbU1E6Z
ないね
そもなも>>264で終わってる話だし

282774ワット発電中さん2018/02/17(土) 20:14:28.04ID:3t2hmt/h
やって見りゃすぐ済む話を延々と・・・
不毛な非生産的な話が続くなぁ
最初の質問者は試しにやってみたのかよ
使った処理系と、結果書けよ

283774ワット発電中さん2018/02/18(日) 01:43:44.20ID:i8CgGUQ3
まあでも自分には、丸々行末までと置き換えるっていう知識はなかったから
参考にはなったかな

284774ワット発電中さん2018/02/18(日) 02:28:09.18ID:G+qIy5g6
コメントは除去される
(空白1個が残るかのごとく、コメントの前後は連結はされない。
 大昔は連結され…るような処理系もあった)

285774ワット発電中さん2018/02/18(日) 03:40:51.45ID:rxWZ1N52
>>283
言えてる。
#defineなんて、ON 1 とか true 1 とかしか知らなかったよね。

286774ワット発電中さん2018/02/18(日) 06:51:29.95ID:IxFvRIQd
ABS(x) ((x)>=0?(x):(-(x))) くらいは知ってるやろ

287774ワット発電中さん2018/02/18(日) 09:47:59.18ID:PX2SWeDW
安易にSWAP(x,y)を作ってはまるのは、定番の教科書ネタですね。

288774ワット発電中さん2018/02/18(日) 10:29:14.11ID:TkmRTuI5
y = ABS(x++)
とかやってはまるのも追加で

289774ワット発電中さん2018/02/18(日) 10:59:52.24ID:I+ni7gR9
#define hoge(X) X

#define hoge(X)
とを切り替えて、デバッグ用の文を入れ外しするよ。

例えば、
hoge(printf("DEBUG\n"));
とかやれば、#ifdefで書くよりも行数少なくエレガント

290774ワット発電中さん2018/02/18(日) 23:50:39.47ID:kcHnvZhj
define いいけど、行末の ; を付けてしまうとエラーにならない?

291774ワット発電中さん2018/02/19(月) 08:21:28.41ID:x1c4fGnb
空文がエラーにならないところならOK

新着レスの表示
レスを投稿する