C言語なら俺に聞け 148
■ このスレッドは過去ログ倉庫に格納されています
流石に591はネタとしか思えない
というか、酷すぎだろう C99時代のhello worldプログラムを考えてみた。
#include <stdio.h>
#include <stdlib.h>
static inline void
print_hello(void)
{
puts("Hello, C!");
}
int
main(void)
{
print_hello();
exit(EXIT_SUCCESS);
}
exit()関数を使ったり、main()関数の中に直に処理を書かないとか色々。 なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ? >>653
あれ?それ、コンパイルすると警告出ないか?main()が何も返してないって。
いや、exit()を理解してくれるコンパイラなら何も出ないかも知れないけどね。 >>655
c99 -O2 -Wall -Werror -Wextra hello.c -o hello
これで無警告だった。
c99はGNU/Linuxだとgcc -std=c99を実行してる。
icc -std=c99 -O2 -Wall -Werror -Wextra hello.c -o hello
でも成功。
GNUのコンパイラでもIntelのコンパイラでもちゃんと処理できるのでいいんじゃないかなぁ。 main に限り 戻り型int としながらも return で値を明示的に返さない場合
暗に return 0; とするってなかった? (653 で exit() 無しでもセーフ) c99から(とc++も)main()は特別扱いで省略時はreturn 0;と扱われる
とググったらでてきた
なんでmain()だけ?どうせなら関数全てそうしちゃえばいいのに、と思わなくもない >>659
「書かないこと」が一命令と等価ってどうよ? 不定の戻り値なんて殆ど使いもんにならんから
戻り値がスカラー型ならコストも低いし 0 返してる扱いでいい気がする >>656
-std=c99いらねって
デフォだぞ今のgccは 確かSolaris+sunのコンパイラではreturn 0 もexit(0)も書かんかったら$?は不定だったような記憶がある >>669
で、誰が gcc で -std=c99 を指定してるって?
恥の上塗りすぎる w マ板で見つけたんですけど、何がやばいんですか?
355 仕様書無しさん sage 2018/10/17(水) 10:31:44.15
https://qiita.com/hamichamp/items/7b7a7ee091a6856ac900
こんな奴でもフリーランスになれるんやな >>676
すみません勘違いしてました
このブログの投稿者がフリーランスでこの記事の人のことではないんですね >>674
確かに、俺が何を言ったのか、おまえ解ってないな
だから聞いたのか
672で自らの理解力を露呈して自爆しやがってw >>653
だれかこれに触れてほしい(自己主張)
C99というかモダンCプログラミングの初歩として
(手前味噌だが)かなりいい感じだと思うんだけどどうかな。
とりあえず今までのhello worldプログラムは
・return文、しかも0固定をmain()関数に書いてしまっている
・main()関数に直に処理を書いてしまっている。
などの理由であまり実際に即していないと思うのよね。 >>679
人は互いに理解し合えるという幻想に対する反例として読んでます 別にmain()に処理書いてもいいと思うがな。パッと見てわかるぐらいの小ささなら。
まあしかしこれは各個人の信仰の問題であって言語そのものの制限ではない。
そこまでなんとかしたいならそういう言語を作るしかない。
布教活動すれば信者は増えるだろうが相変わらず教義に反する異端者はこの世に存在し続ける。 >>679
hello world に求められることは、できるだけ少ない手数でイメージ通りの結果が得られることだと思うんだ。宗教の前に。
>>653 に込められた思想が分かるようになるのはずっと後。
まあ、ある程度分かるようになってからのお題としてここで議論するのは面白いかもね。 mainの中にputsの代わりに別関数呼ぶと言うのはビジネスロジックをmainから極力排除するという意図があると推測するけど、最初の一歩としては複雑すぎる。
いきなり最初から関数、inline、static、exitの仕様を理解する必要があるので。 スタイルの問題じゃねえ
sizeof(32)とか書いてるアホが指導員やってることが問題なのであって voidといいsizeofといい、今年は豊作だなw voidくん見てる〜?
sizeof(32)くんて友達出来てよかったねw ブルーボトル日本開店おめでとう。
西海岸で飲む、いつもの味。僕にとって新鮮みがないことが、成功の証だと思う。 >>678
で、ごたくはいいから>>672の回答書いてみろよ
まあ書けずに逃げ回るんだろけどな w >>653
>>679
ゴミだね
お前ら初心者はもう少しわきまえた方がいい。
初心者が思いつきで出来る領域はCにはもう残されていない。そういうのがやりたいのならGoやRustに行け。
C99からもう20年近く経つ。
その間、誰もそういうことをやらなかった(或いは、やっても流行らなかった)のは、その必要がないからだ。
今のお前のように、無視されて終わったからだ。
それが何故ゴミなのか理解出来ないうちは、もっとコードを書くことだ。 >>691
俺は半角君ではないし、あおり抜きでゴミだって事だよ。
マジでそういうことを世界中の誰も20年間しなかった理由を考えてみろ。
この期に及んでお前らみたいな糞初心者がCに溢れている意味が分からんが、
お前らはどうやらどの言語でも良くて、単に流れているスレに溜まっているだけだろ。
だから無理にでも流れないと不安になるから無駄釣りしているわけでさ。
そういうのも迷惑だから止めろ。 マジックNGワード「お前ら」 ※2(5)chの全板共通
釣りレス or 気が触れた方のレス or 玄人ぶった素人のレスなど。
ウザいレスを回避する際に使用します。
参考:
【レス抽出】
対象スレ:C言語なら俺に聞け 148
キーワード:お前ら
抽出レス数:18 >>693
お前らが駄目なところはそういう所なんだけどな。
最近パヨクが急速に腐ったのも同じ理由だ。
最近は693みたいに、「俺の希望する意見じゃなきゃイヤ」な奴が多すぎる。
ネットってのはリアル以上にいろんな人がいて、様々な意見を聞ける。
その中で、どんな偏った意見も、探せば出てくる。
フィルタ(ブロック)しまくれば都合がいい意見しか見えない状況が簡単に作れる。
これは昔で言う、イエスマンで周囲を固めた状態だ。一番やってはいけないと言われていたことだ。
そしてそれをやりまくったのがパヨクで、今は世間とずれまくってるだろ。
今の状況で俺をブロックするのなら、お前らはパヨク以下に落ちる。
勿論、俺が言っていることが間違いだらけで、読む価値無しと判断するなら、フィルタするのは自由だ。
しかし実際の所、>>679を肯定的に評価している奴なんて誰もいないだろ。俺が一番はっきり言っただけであってさ。
この状況で俺をフィルタするってのは、お前はパヨク予備軍だって事だよ。
世界中を探して>>679を褒めてくれる奴を見つけだし、そこに移住すれば、君らは幸せになれるだろう。
俺も君らが居なくなって清々するし、有り難いから、そうしてくれれば助かるのだが。
そもそも、この程度でNGが必要な奴はここ(2ch)に来るべきではないし。
まあ、>>693には俺が見えてないはずだから、この話はここで終わりだが。 お題は「モダンなCでHello World」です
ファイッ! 弁明しておくと、俺の >>653 は釣りじゃなくて、まったくの興味というか
こういうプログラムのほうがいいんじゃないかという提案だった。
結果的に荒れ気味になってしまったのはすまん。
(個人的には旧hello worldよりも洗練されていると思うんだけどなぁ……) >>697
お前も何故か必死なんだな。
同一人物でないのなら、単に>>679や>>653を褒めてやればいいだけだろ。
そこで「気に入らない意見」(に反論)ではなく、
気に入らない意見を言った「俺」にフォーカスしてくる辺りがパヨク予備軍なんだよ。
実際の所、ネット上には間違ったことを言う奴も多い。それが俺だというのならさておき、
誰も>>679を褒めてないし、20年間世界中でそんな馬鹿なことをした奴が居ないのも事実なんだから、
そのことをふまえて普通に考えれば、>>679がゴミなのは事実だし、自明だろ。
ゆとりはスクラムを組んで連呼し、黒を白だと主張する事がよくあるが、それは明白な間違いだよ。
てゆうか、一体お前らは何がしたいん?
ゴミをゴミだと言われない匿名掲示板なんて、逆に存在価値がないだろ。
腐されたくないだけなら、FaceBookでやるべきだ。
後ろ指さされることはあっても、堂々とゴミだと言われることはあまり無いはず。
それがお前らの望みなんだろ?
(今回の>>675もそう。ここでボロカスに言われることはあっても、直接言われることがないからあのままなのであって) >>699
洗練されているとは思うが学び始めたばかりの初心者に最初に見せるサンプルプログラムとしてはやはり複雑なのではないかと思う。 >>702
褒める気があるのならもっとはっきりと褒めろよ。
>>703
そういうところがお前らの駄目なところだ、と言っているわけだが。
まあ所詮それがゆとりの限界だよな、とは思う。
否定されたことがないから否定されることに過敏なのか?最近この手の輩はよく見かけるが。
しかし、俺をゴミ呼ばわりするお前ですら>>702程度しか言えないのなら、
逆に俺の意見「>>679や>>653はゴミ」を補強しているではないか。
俺をゴミ呼ばわりするのなら、もっとベタ褒めしないと筋が通らないだろ。
そのことにすら気づけないのか? >>699
一応マジレスしておく。
ただし技術的な答えは書かない。
これは最近、この手で煽って答えを書かせる輩が増えていると感じるから。
そういう奴らにはエサを与えず、餓死させるのが習いだ。
君のせいではないから、この点は安心していい。
> こういうプログラムのほうがいいんじゃないかという提案だった。
これはいい。
というか、こういうのを自由にやれるところがいいところであって、
逆に、遠慮して何も言えないようなら匿名掲示板の存在価値はない。
だから、思ったことはどんどん言えばいいし、
それについて文句を言いたければ言えばいいし、結果的に荒れても問題ない。
ここは、そういう場所だから。
逆に、FaceBookや実名空間で出来ることをここでやるべきではない。
実名空間で口頭でやった方が手間もかからず早いからだ。
問題は、ゴミをゴミだとはっきり言いきった俺に対して、
言い方が良くない系の言いがかりを付けてくる馬鹿が多いことだ。
匿名掲示板で全員が意見をオブラートに包んで言うようになったら存在価値なんて無くなる。
そもそも、それを求める奴がここに来るのも間違っている。
そんな奴は、少なくともコテハン制の所に行くべきなのさ。 相変わらず低学歴知恵遅れたちは
超どうでもいいことで
超どうでもいいレスをひたすら書きこんでるわ >>700
言えてる。
CASL2の勉強で1から140までの合計を求めて、その数を文字列に変換するプログラム書いたんだけど、どうよ?
ほら。Cって組込にも使われるじゃん。
printfが無い環境のために良い練習じゃん。
(実際、組込Cでprintf無いけど、キャラクタディスプレイ付ければ文字コードを送ると表示される環境と言うのがある)
なぜ140かと言うと各桁が同じ数字じゃ無いので保存場所の間違いに気付きやすいから。
4桁は合計で出た数の桁数。
キャラクタディスプレイの代わりにputs縛りって事でさ。 >>699
hello worldの目的からすれば、意味のある動作する完全なコードを最もシンプルにかつ素直に表すことが重要だと思うから、個人的には従来のhello worldの方が「洗練」されてると思う。 >>705
でもvoid君はC言語詳しくないじゃん 見立てによるとJava厨だからな
voidは知ってるが引数voidは知らない、
となればJavaスレで相手にされなくなってCスレにマウンティングしに来たクズだ
>>37はもう伝説だろ >>689
おまえの勝手な妄想にどう答えろって言うんだよアホ >>711-712
お前らがC言語に詳しいつもりなら、それなりの見解を添えて>>679や>>653に対しての意見を言えばいいだけ。
誰一人として褒めてない(≒俺の意見も正しい)この状況で、
そういうゆとりスクラムでゴネて駄目なものをさも素晴らしいことにしようとするからゆとりは嫌われる。
お前らは自覚出来ていないようだけども。
いずれにしても、ゆとりスクラムなんて誰も得しないから止めとけ。
お前ら自身も学ぶ機会を失っているだけだし。
表面的な言い争いでスレが潰れることはない。
>>679だって、本当にそう思って主張したのだから、それでいい。それで荒れるのなら、それも仕方ない。
ただ、スクラム組んでるゆとりみたいに、自由な意見を排除しようってのは、スレを毀損し、潰す。
だからそれは止めろと言っている。
お前らが望む「どんな糞コードでも褒めてもらえるスレ」は、ここ(2ch)では存在し得ない。
お前らみたいに、自分の意見を全く言わず、ただ他人を馬鹿にしたいだけの奴が居るのも、また事実だから。
ただここら辺、何度言ってもゆとりには通じないところをみると、やはりギャップがある。
俺には、ゆとりが望む「どんな糞コードでも褒めてもらえるスレ」は存在価値が無いと思える。
読んだとしても、全く上達に繋がらず、むしろ道を誤ることになるからだ。
ここら辺がマジで通じないのは何故か、分かる人がいたら、解説願いたい。
ゆとりは今の居心地の良さ、つまり、書いてある内容の正誤より、言い争いのないだけのスレを好む傾向がある。
そして、それが長期的にはスレを殺すことも認識出来ない。実際、それでスレがゴミ化するのを何度も見てきた。
これがゆとりの特性、ってことなのかね?
まあとにかく、誤解無いように何度も言っておくが、
俺自身は653や679のような主張はやりたいのならやればいいと思っている。
そして中身はゴミだという見解だ。
結果的に荒れたようになっているのは679のせいではないから、萎縮する必要はない。
が、誰も褒めないコードを素晴らしいと思えちゃうのは、679に技術的な問題があるんだよ。それは自覚した方がいい。 >>714
指摘あざす。荒れ気味になっちゃったのは残念だけど、俺のコードに関して(賛否関係なく)F/Bを貰えたのは嬉しい。
差し支えなければどの辺りがゴミなのか教えてもらえないかな。今後に生かしたい。
というよりも、既存のhello worldプログラム——つまり
#include <stdio.h>
int
main(void)
{
printf("Hello, C!\n");
return 0;
}
で、(C言語の関数としてはあまりに多機能で異質な)printfを使っていたり
組込み機器向けのプログラムでもないのにmain()関数をreturnで終了していたり
main()関数のなかに直に処理を書いてしまっている点は、問題ないと考えているってことだよね。
これらはこのプログラムを書く初心者にとっては不要な心配だということかな。 ほんと人間は分かり合えないという実例だな
その2つの指摘のどちらも誰にも共感されないだろう
世界は広いから「誰にも」は言い過ぎかもしれないけどさ >>715
組み込み機器ではmain()関数をreturnで終了せよと? >>714
>>679や>>653への意見以外の事を長文で沢山書いてるのは君だ。
もっと自分のやっていることを自分で見た方が良い。 >>713
勝手な妄想?
> c99はGNU/Linuxだとgcc -std=c99を実行してる。
> icc -std=c99 -O2 -Wall -Werror -Wextra hello.c -o hello
> でも成功。
に対して
> -std=c99いらねって
> デフォだぞ今のgccは
って書いたアホがいたって話なんだが w >>719
だから書いたが
それがどうしたんだよ
おまえiccがどうたらぬかしてたろ
ちゃんとそこをからめて説明してみな 半角はまだコード書き込んだりする分>>714よりマシだな >>715
どちらがより初学者向けかの比較の問題だと思う。
既存のhello worldが今の時代に則して最適とは思わないけど、それにも増して貴方のhello worldがいきなり覚える要素が多すぎて適切じゃない。
ちなみに組み込みを何か勘違いしてるっぽいけど、普通はmainからreturnさえしない。 >>720
-std=c99
って書いてあるのは
1. > c99はGNU/Linuxだとgcc -std=c99を実行してる。
2. > icc -std=c99 -O2 -Wall -Werror -Wextra hello.c -o hello
の2つ
1. のことを言ってるならc99コマンドの作者に言え
2. のことを言ってるなら精神科か眼科に行け
って話な w >>722
> 普通はmainからreturnさえしない
マジかw これは恥かしい勘違いだわ。
普段まったく組込み関係に触れてないのがバレてしまった。 OSが存在しない組込み系ではあり得ないこともない
通常は電源投入後スタートアップルーチンからmain関数を呼び出して電源遮断するまで永久ループ
万一、電磁パルスや放射線等でマイコンが動作しプログラムカウンタの値が狂ってループ外に脱出した場合は強制リセットで再起動
void main(void) {
while(1) {
... // メインループ: 永久ループで脱出不可
}
_asm("JP VECT_RESET"); // 異常発生により強制リセット: スタートアップルーチンへ強制ジャンプ
} 確か今のコンパイラ(icc,gcc,clang)ってデフォルトで-std=gnu99か-std=gnu11じゃなかったっけ >>726
そうかもしれないが
gnu99とc99はちょっと動作違うじゃん?
と言ってもトリグラフの警告の有無とかその程度だけど。
c99コマンドは-std=c99だけどiccコマンドは-std=c99を明示すべきと判断した。 >>729
プロセスベース以外の組み込みソフトでmainからreturnするコードを見たことないんだけど、もし差し支えなければ後学のためにどんな作り方があるのか教えてください。 >>731
そんなもんmain呼ぶcrtの方で無限ループするように作っとけばできるじゃん。 >>707 に誰も挑戦しねーし。。。
千の位は1000で割れば数が出るし、余りが千の位を引いた数だから、今度は百の位、十の位ってする。
各位の数字に16進数の30(文字コードで数字の0)を足すと文字列の完成。
(Cだと末尾に¥0も必要。“0000”とか文字配列作れば自動で挿入される)
大まかなロジック教えれば書けるだろ。
分かってみれば大した事してないんだよ。 >>733
「そういう作りもできる」ってのは分かります。
mainの外部に無限ループのあるソースは見たことないので普通はそんな事しないと思ってました。 経験的には、exitしちゃだめというシステムはあったけど、returnしちゃだめというのはなかったなあ。
returnに到達しないプログラムはもちろんあるけど。 >>735
補足です。
mainからreturnした後に無限ループってのは普通に見ます。
あくまでmain自体を無限ループで囲んでいるのは見たことなかったです。 >>723
つまり精神科に行くのはおまえってことだな
語るに落ちたなw 一周まわって、何かあったらどんどんexitするようにしたよ
メモリリークしてるかも? ⇒ 一応プロセス再起動
処理が滞ってきたかも? ⇒ 一応プロセス再起動
便利なOSを使うようになってからどんどん怠ける一方よ めっちゃプロセス起動速いOSあってもいいよねと思ったけど、結局LWPのスレッドになるんだろうな メモリリークとか、そこら辺勉強するのにおすすめの方法ある たんにfreeとかdeleteすればいいだけだからなあ。
オブジェクト指向・デザインパターン一般の教科書読めば自然に身につきそう メモリーリークの勉強は本で学ぶよりも
痛い思いをして体で覚える方が身につく
個人の感想ですけどw C言語は言語レベルではオブジェクト指向はサポートされていない >>743
しかし身に付いても中々メモリリークのバグはなくならないよな。
やはりその辺が心配なら他の言語使った方が良いと思う。 クソコードに揉まれてクソコード書きになった人も多いから、クソを体験しろとも言えんな…
長い時間かけてデバッグして身についたもんは確かにあるけど、人生は貴重だからな。 インスタンスのライフタイムさえ設計すればメモリリークなんぞ発生しないと思ってるわ 誰もがそう思うのだよ。
しかしこの世は思い通りにはならんのだ。 ■ このスレッドは過去ログ倉庫に格納されています