C言語なら俺に聞け 151
■ このスレッドは過去ログ倉庫に格納されています
やっぱり自信がないからコンピュータ好きになるのかな? ICEデバッグしてるとき、とある変数の値をいくつか足し算して、別の変数に代入する関数で、
変数の内容同じなのに、結果が違う。。
最適化OFFにしてビルドしてる。 その関数は、別の場所から2度呼んでて、1回目と2回目で結果が違う
計算に使う値は全く同じなのに >>230
自分の経験則で言えば、大抵は関数の処理途中で割り込み処理が発生してメモリかレジスタバンクを書き換えていると思う 一回目から二回目の間で変数のどれかが書き変わってるに決まってんじゃん >>230
加算に使っているレジスタを割り込みで使いっぱしてね? まれにポインタ周りバグっててメモリー書き換えてるとか
てかICE使ってるならそこで止めて変数の中身確認しろよ ICE製造の過程でICEそのもののデバッグでもしてんじゃね ここ20年ほどフルICE使ってないなぁ。
未だにあるんだろうか? 230だけど、俺の見当違いでした。
インプットの変数の値が違っていたので、当然足し算の結果も違っていたというオチ。
ICEデバッグだと変数を表示するとメモリの中じゃなくて表示した時点で割り当てられたレジスタの値を表示するので、
変数としては変わってないはずなのに他で書き換えられるので逐一変わって混乱していた。
ICE初心者でしたw デバッグ中に最適化を抑制するのは間違いではないと思います。
慣れてくると最適化したままでもある程度推測できるようになりますので、
リリースオプションでICEを使用することの方が多くなるかもしれません。 ぶっこ抜くと言うよりターゲットボードのCPUの代わりに専用のソケットを実装して専用プローブで接続する
PCなどと違って組み込みのSoCにソケットなど無いのでぶっこ抜いて差し替えるなど無理 >>243
20年前のICEならそうなんだろう
>>244
JTAGの話か?
ソケット云々の前にGHzオーダーのCPUだと信号引き出すなんてとても無理 scanf("%d%d%d", &a, &b, &c);
こうまとめて入力するのをfgets使うとどうやるの?
fgets(s, sizeof(s), stdin);
sscanf(s, "%d", &a);
↑
このセットをループで三つまわすしかない?
一行でやる方法あるんかな いや、1行中に入ってるなら同じじゃないか?
行の区切りとか要素の区切りとか細かい話はあるけども またfgets教か
マジいやらしさがカルト教団さながらだ >>246
なんというか、ほとんど答えが上に書いてあるかのような質問だな・・・
sscanf(s, "%d%d%d", &a, &b, &c); >>244
そんな感じ
CPUじゃなくてROMだけど
就業先で当たり前のようにICE使わせて頂いてるけど、お値段見てビックリ・・ >>252
それって商売になってるのか?
普通に公開されてるが。 そうなの?何の宣伝になってるのか全くわからんのだが。 誰もアクセスしない隔離スレなんで
時々こうやって宣伝して引っかかるカモを呼び寄せようと 元々有償でプログラム作るスレとして作ったスレだったんだろうけど結局誰もそんな風には使ってなくてただのプログラム発表の場になってるよね?
ま、しかし、5ちゃんのような掲示板で稼ぐのは無理があるよなあ。それ専用のサイトなら可能だろうけど。 既存をちょっと修正してほぼデグレのテストというスタイルの俺には、
要望に応じて1から新しいプログラムを組む人を尊敬する
修正は修正で既存への影響の面でそれなりのノウハウは要るにしても >>258
むしろ俺は人の作ったワケワカメなコードを文句も言わずメンテしてる人はすごいと思う。 >>259
文句を言わずに、というより
文句を言わせずに、だと思う。
俺は奴隷だったので
よくわかる。
会社辞めて派遣になって
気分すっきり!
な~んの責任もないのに
年収1000万だもの
派遣辞められません! >>260
派遣でそれほどの能力があったら独立して2000万は稼げるのでは 派遣でそれだけ貰える程のスキルがあるってことは、
C言語だと本当に低レベルのデバイスの制御からビジネスロジックの
設計からお任せできるレベル
独立すべきでしょう ハードの設計から組み込みソフトはもちろんWindows、Android.、iOSのアプリ、DBもWebもゼロから設計できるスキルがあったらどこに行ったらそんな高級取りになれるでしょうか? 自分で開業した方が良さそうな感じもするが、そうなると営業力も必要になるな。
まあでも Android や iOS アプリの場合は営業力あまりなくても世界中に売れれば儲かる事がある。
電卓アプリでこんな風に稼いでいる人も居るし。
https://appmarketinglabo.net/calculator-1100man/
これは世界での需要がどのぐらいあるかとプログラムが簡単かどうかはあまり関係ないってことでもあるかな。
需要がないものだと作るのが大変なプログラムでも売れなくて稼げない。苦労と儲けは無関係。 >>267
日本に前金払うところなんてないから。
たからデスマになる Linuxでシリアル通信のソフトを作成しています。
http://codepad.org/L4BLwgAQ
コマンドを送信すると、相手が応答電文を返してくる仕様なのですが
write→readでは、うまく受信できないようです。
teratermで同じ電文を投げると、受信できるので
このソースが悪いのだと思っています。
投げて、受けるというのを上手くやるにはどうしたらいいでしょうか。
お助けをよろしくおねがいします。 >>270
とりあえずwrite()の戻り値とread()の戻り値が-1でないことから確認しようか >>272
writeはバイト数の13が返ってきます。
readはここで止まります。ずっと待ち?状態になるようで、ctrl+cで抜けるしかありません。 Cっていいよね。
シンプルで全て見えてる。
キチンと組めば性能も素晴らしく、
ソースも分かりやすい。
ま、馬鹿が使うと酷いことになるから
馬鹿には触らせたくない!
馬鹿にはJavaがお似合いw >>273
そもそもtioが未初期化
33行目にtcgetattr(fd, &tio)とかを入れて Cのスレで用途も構造も違うJavaとか出してくるあたり相当頭悪いんだと思った ああ
Javaわかんね―馬鹿か
Cしかわからん馬鹿院生って感じかな(笑) なんでスレがカテゴライズされているかも理解出来ない Cが分からないってやつはコンピュータの基礎の基礎が理解できてない。
いきなりプログラミングから学ぶからそうなる。 Cしかできない奴はCを評価できない
そんな簡単なこともわからない
院生くずれのバカニート(笑) いや評価はできる
この世の森羅万象すべてを知り尽くしているやつなんかいない
みんなそれぞれ何らかの「井の中」にいる
そこからCならCがどう見えるかを述べているのを
聞いた者がどう捉えるかの問題だ
自分の「井の中」のほうが相手より大きそうだからって
天狗になるやつこそ成長の止まった将来性のないやつだ >>283
C といえども OS なしではなにもできません フリースタンディング環境のことだろ
ソース入力やビルドをOSなしでって意味ではなく >>285
C だけではなにも出来ないのではないでしょうか、最低限アセンブラの部分が数%はあるでしょう? クロス開発ではホスト環境とターゲットは別
小規模組込み開発ではターゲットにはOSと呼べるものが存在しない場合もある >>287
CPUによってはリセットエントリから100%C言語だけで記述できるよ。 OS無しで動くプログラムが書ける言語はC?
ってことだろうな >>289
へえ!そうなんですか!多倍長演算をCで書くときキャリーフラグはどう扱うのですか? >>292
15bit+キャリーみたいな形で扱えばいいだけ >>293
それは私もやりましたが、悲惨なコーディングになりました、キャリーを使えるのにそれを無視してCですべて記述するとか、ありえない選択だと考えています
https://mevius.5ch.net/test/read.cgi/tech/1434079972/51 >>294
そりゃビットサーチとか場合によってはCPUの機能を使ったほうが速かったりシンプルに書けるケースもあるけど、それはそれでまた別の話。
それを以てC言語で書けないとは言えないよ。 >>295
まあ java だけで「やってしまった」OSというのもありますから…多分 JNI を使っているとは思いますけど…
C 言語だけで全部やってしまう、というのはありえなく、例外 exception の実装に有用な setjump(), longjump() ですら、CPU を叩かずにはいられない内容ですから、世に蔓延する「C言語マンセー」は、その機会があればなんとしても叩かずにはいられないのです >>296
もしかしたら貴方と私は違う思想の元で仕事してるのかも。
JNIはAndroidぐらいでしか使ってない、てかそもそもJavaを使う機会が少ないような業界の人です。
なんちゃってtry〜catchのためのsetjmp系はそれでもやっぱりアセンブラを使わないC言語の範疇内な訳であって、やっぱりC言語否定の理由にはならんとです。
唯一、OSを記述する際のタスクプリエンプトだけはC言語だけで記述できず悪魔のスタック操作とコンテキスト切り替えが必要なのでアセンブラが必須だとは思いますが。 >>296
別にsetjmp, longjmpなくてもプログラムは組めるし
Memory Mapped I/Oならデバイス制御もC言語だけで組めるだろ プログラミング素人です。
scanf関数について質問なのですが、
char str[10];
for(i=0;i<5;i++){
scanf(“%c”,str[i]);
}
として、「abcd」と入力された場合、
str[0]=‘a’
str[1]=‘b’
str[2]=‘c’
str[3]=‘d’
str[4]=‘¥’
str[5]=‘0’
となるのでしょうか?
str配列の0~3番目にa~dが格納されていることはprintfでわかりましたが、4以降は何が格納されているのか自分で調べる方法がわかりません… >>299
C/C++では文字は整数なんだ。整数として出力して、アスキー表を参照すれば、文字がわかるはず。 >>299
鋭い質問ですね…手元でいろいろ試していますが、今ひとつ事情がつかめないでいます
https://ideone.com/l3ZslT
ideone と x64/gcc/cygwin でも結果が変わってしまいます… str[5]以降は決まってないから調べてもあまり意味がない。多分ゴミデータ。 >>299
str[4]='¥0'
それ以降はゴミ 自作関数内のエラー時にerrnoに値をセットするのってマナー違反ですか? 信長 入れられないなら殺してしまえそのプロセス
秀吉 入れられるまで仕様変更を待とう
家康 俺が直してやる! >>305
str[4]が改行コードの\nだとして
str[5]は\0にはならないの? >>310
それは明らかになりません。
null文字入れるのは大抵はこっちの役目です。 %cは文字は全部入る。
受け付ける文字をはっきりさせたいなら[]使うのがよい。 printf()のペアっぽいからという理由で
scanf()を使わせる初心者本をこの世から駆逐すべき 使い方を熟知している人が使う分には問題ないが
「良い子はマネをしてはいけません」の典型だな 初心者はただ値が入力できりゃ楽しいんじゃね
ついでにscanfはかんたんに間違いを引き起こすことが出来るから脆弱性の説明にも使える
このご時世、かんたんに間違いを体験させること自体が難しくなってる
セキュリティが高くなると間違えさせる行動へのコストもまた高くなる 昔のマイコン的なものだと暴走したりしてなお良い。
core dump してるようじゃまだまだ安全過ぎる。 たしかにscanfが危険なものだと知った時にどうやってfgetsに置き換えるか考えたの思い出した >>287
その数%のアセンブラの部分を、おまえさんは「OS」と呼ぶのか? >>314
scanfの仕様をロクに調べもせず自分の頭で考えもせず
どっかの受け売りを初心者に吹聴する無能老害こそ
この世から駆逐すべきだろうが >>319
ヨコからスマンけど
そゅ意味じゃないのが
理解できないほどの馬鹿は
ここにくるべきではない >>315
「よい子は真似をしてはいけません」と言われる芸当をやっているプロになろうって人には当てはまらない >>321
おまえさんこそ>>283からの話の流れを読んでるか?
人を馬鹿呼ばわりした自分の発言に責任を持てよ 匿名掲示板だから逃げたければ逃げられるが
おまえさんの人間性の問題が変わるわけではない 馬鹿丸だし(笑)
論文ゼロの院生くずれ馬鹿ニート
という雰囲気プンプンだな(爆) 院生とかめっちゃ高評価じゃんw
俺には大学にコロコロコミックを持ってきて、全ての人間が敵に見えて毎日発狂してた同級生の江○君と被ってしまう。
頭はすこぶる良いんだけど、頭が弱い残念なアイツの雰囲気がプンプン ■ このスレッドは過去ログ倉庫に格納されています