C言語なら俺に聞け 151at TECH
C言語なら俺に聞け 151 - 暇つぶし2ch750:デフォルトの名無しさん
19/05/28 17:05:35.46 5GqHhS1Q0.net
CはC++ほどではないにせよ色々酷いから
Cを置き換えられる言語があるなら見てみたいしぜひ置き換えてほしい

751:デフォルトの名無しさん
19/05/28 17:30:53.21 vL2LyOeQ0.net
>>726
URLリンク(www.spriters-resource.com)
ちょっと検索してみたらもうドット絵まで準備されてるらしい
さすがに西洋人は仕事が早いな

752:デフォルトの名無しさん
19/05/28 19:02:59.10 Pzgny9jf0.net
URLリンク(www.datadeliver.net)
キューを実装する?プログラムを書いたのだがコアダンプになってしまったため、どこが悪いのか調べるために1回だけenqueueをするように変えたら無限に10を生成するようになってしまった
どこが悪�


753:ゥったのか、どうして10が無限に生成されるのか、教えて欲しい 環境は学校の端末演習室でやったから詳しいことはわからんです



754:デフォルトの名無しさん
19/05/28 19:04:37.65 F6815kaN0.net
>>730
それじゃあ検証のしようがない
ネットカフェで書いてここに晒せ

755:デフォルトの名無しさん
19/05/28 20:11:39.46 vL2LyOeQ0.net
「無限に10を生成するようになってしまった」「どうして10が無限に生成されるのか」
コレがポイントだな
無限に生成してるように見えるだけだよ
要するにprintが悪い
whileだと分かりづらいんだよ
forだとラク
「q->head = temp;」とか、自分で書いてて分からなかったんだろ
だからwhile文だとこのケースでは分かりにくくなる
forを試gうのが正解
void print(struct queuel *q){
struct cell *pt;
printf("[");
for( pt = q; pt != NULL; pt = pt->next ){
printf(" %d", pt->data);
}
printf(" ]\n");
}

756:デフォルトの名無しさん
19/05/28 21:09:24.77 Rd7hCJnFa.net
>>725
Pascalの方が先にできたんだっけ?
まあでも用途が大幅に違うよね。Pascalはコンピュータの学習用の高級言語でCはOS記述用でアセンブラ代わりに使う言語。

757:デフォルトの名無しさん
19/05/28 21:27:52.19 jSvCRMUQ0.net
Pascalが嫌いな人が作った言語だ

758:デフォルトの名無しさん
19/05/28 22:21:26.92 /lAZ9dU10.net
>>733
だからそんなことを言い出したら>>722の言うポインタが安全な言語って用途が違う言語だよね
って話にしかならないんだが…

759:デフォルトの名無しさん
19/05/28 22:24:51.47 Rd7hCJnFa.net
>>735
まあそうだな。
Cは用途が違う上に古くて安全性が低い感じか。

760:デフォルトの名無しさん
19/05/28 23:20:22.65 jSvCRMUQ0.net
安全性って何だよ
インテルのerrataみたいなことか?

761:デフォルトの名無しさん
19/05/28 23:34:40.02 IamnQRk90.net
子供にはナイフを使わせるなというのと同じ類いか

762:デフォルトの名無しさん
19/05/29 04:57:03.97 mWed49vm0.net
>>736
いやOSを書くにはその安全性が邪魔になるから両立は難しいよ

763:デフォルトの名無しさん
19/05/29 06:20:35.18 D5Uzvk1s0.net
OSのコードはどんな感じなの?
ポインタを使ったトリッキーな事をやってるの?
未だにLinuxでバッファオーバーフローの脆弱性出てるよね

764:デフォルトの名無しさん
19/05/29 06:48:57.50 Bfh00rIBM.net
>>740
OSのソースなんてちょっとググればいくらでも出てくるから自分で見なよ

765:デフォルトの名無しさん
19/05/29 07:45:37.52 6C23lth10.net
見たこともないやつが議論してたのかよ

766:デフォルトの名無しさん
19/05/29 08:03:59.01 aFUCBt4U0.net
詳細linuxとかいう1000ページの宗教書だろ
持ってるだけで御利益がある

767:デフォルトの名無しさん
19/05/29 08:13:08.04 akQz27P/d.net
オープンソースなのだから1分もあればソースコードくらい見られるだろうに

768:
19/05/29 18:31:01.76 8RGCI4670.net
>>740
>未だにLinuxでバッファオーバーフローの脆弱性出てるよね
最近は聞かないね…

769:デフォルトの名無しさん
19/05/29 19:51:04.91 D+pGsdPRa.net
今普通に静的・動的解析使うとバッファオーバーフローなんてあり得ない感じするわ。

770:デフォルトの名無しさん
19/05/29 20:40:15.44 rT4tqcG+0.net
strcpyとかsprintfとか使ってるコードはまだたくさんあるでしょ
dstのサイズ指定しないライブラリとか

771:デフォルトの名無しさん
19/05/29 21:00:57.32 FFsAnOexa.net
Cは標準ライブラリ考え直した方が良いかもね。

772:デフォルトの名無しさん
19/05/31 08:23:23.52 JBiczG6TM.net
Cが最も好きだけど、
C十十のほうがライブラリが
便利なのあるから、
個人で趣味で作るものは最近は
CとC++�


773:ャ在で作ります。 わりと自由に混在できるので とても助かってます。 こうゆの俺だけですかね?



774:デフォルトの名無しさん
19/05/31 08:28:11.59 7PD5X056a.net
C††

775:デフォルトの名無しさん
19/05/31 08:30:02.90 LyENK1r60.net
C‡‡

776:デフォルトの名無しさん
19/05/31 09:21:15.46 GTUdpXapa.net
С++

キリル文字

777:デフォルトの名無しさん
19/05/31 18:42:40.60 JBiczG6TM.net
C十十つ
―ー

778:デフォルトの名無しさん
19/05/31 18:46:16.16 4felF8bG0.net
C田田

779:デフォルトの名無しさん
19/05/31 19:11:42.88 Ki0lpFF5M.net
C云々

780:デフォルトの名無しさん
19/05/31 19:45:27.77 /GnAMAD/a.net
⊂┼┼

781:デフォルトの名無しさん
19/05/31 21:44:53.32 r0b/3vSWd.net
C言語認定一級を取得したら転職でどれぐらい評価されますか?

782:デフォルトの名無しさん
19/05/31 21:48:01.31 I0+j7s4/a.net
さあ?
その会社がどの程度その知識を必要としているかで変わるのでは?

783:デフォルトの名無しさん
19/05/31 21:48:52.32 r0b/3vSWd.net
>>758
そういうときは一般化して正確じゃなくても妥当な範囲で思考して回答する癖をつけましょうね~

784:デフォルトの名無しさん
19/05/31 21:56:26.15 OHagz7+U0.net
うちの周囲じゃ全く参考にもしていないし資格給が出るわけでもないって所が多いな

785:デフォルトの名無しさん
19/05/31 22:06:46.05 4X6MeSMk0.net
英検1級の方が重要そう。

786:デフォルトの名無しさん
19/06/01 11:44:52.57 2YdNSpFdd.net
URLリンク(codepad.org)
雨が降る様子を自分の今持ってる知識だけで作ろうとしたんですが、表現が上手くできてない気がします
だれか改善案があれば助言お願いします

787:デフォルトの名無しさん
19/06/01 18:13:48.99 w9UetZ9K0.net
>>762
それはC言語の問題ではなかろう

788:デフォルトの名無しさん
19/06/01 18:56:55.84 2YdNSpFdd.net
>>763
抜けてました
プログラムの問題として、実行すると縦に雨粒が重なってしまうのが目立っていて、この原因がわからず質問しようと思いました。

789:デフォルトの名無しさん
19/06/01 19:26:44.16 w9UetZ9K0.net
>>764
それは使用する言語とは無関係に、雨らしく見せるアルゴリズムの問題ではないか?
ある処理をC言語で実現したいがどう書いていいか分からないとか、書いたものが想定通りにならないのはなぜかとかなら答えようがあるが。

790:デフォルトの名無しさん
19/06/01 21:18:58.51 2YdNSpFdd.net
>>765
1番上の行で雨を発生させるとき何列目で発生させるかは乱数できめているはずなのに、何行か連続で同じ列に発生しているのがよく見られていて、それが何故なのかがわかりません。
このプログラムは改良中のもので、その前のプログラムは雨粒が全部同じ速さのやつを作っていてそれは問題なく(上の現象も起きず)動いていたので、乱数でなくプログラムの問題かなと思って質問しました

791:デフォルトの名無しさん
19/06/01 21:37:41.87 njUSTe0T0.net
>>766
乱数っていうのは偏るものだから、同じ列に連続して発生することが普通。
同じ列に発生しないような作為をする場合は乱数とは言わないと思う。
URLリンク(twitter.com)
あと、'o'が縦に連続するのに違和感があるのなら'|'などに置き換えれば良いと思う。
URLリンク(i.imgur.com)
みたいな感じで
適当に作っててチカチカしちゃってるからあまり参考にならないかもしれない
(deleted an unsolicited ad)

792:デフォルトの名無しさん
19/06/01 22:01:32.09 2YdNSpFdd.net
>>767
すごい!!!
一気に雨っぽく見えるようになりましたw
乱数の件大変


793:勉強になりました もっと改良するとしたら、そのツイートのように不自然に見えるランダムさをなくすため振るいにかけるような工夫もしてみようと思います。 あと、もしよければGIFのやつのソースコードを貼ってもらえないでしょうか。よろしくお願いします



794:デフォルトの名無しさん
19/06/01 22:03:49.20 gZsm+Fjra.net
一様分布でなくても乱数とは言えるだろう

795:デフォルトの名無しさん
19/06/01 22:10:20.53 njUSTe0T0.net
>>768
一応貼るけど自分はC言語あまり得意でない上に適当にササっと作ったのだからあんまり参考にはしないでほしい
URLリンク(ideone.com)
system("cls")で画面更新してるけどチカチカさせずに滑らかに動かしたいならpdcursesとか使ったほうが良いと思う
あとLinuxだったらclsでは動かない

796:デフォルトの名無しさん
19/06/02 08:12:25.21 Df5btDJSd.net
>>770
ありがとうございます!
初心者なので関数の使い方とか、あと自分がいかに無駄なコードを書いてたかとかがわかってとても参考になります
調べてみようと思います。ありがとうございました

797:デフォルトの名無しさん
19/06/02 13:28:56.70 gM/IYiKd0.net
constが外れるのにキャストせずに
char *p = "abc";
とできることを定めている条文どこだっけ?

798:デフォルトの名無しさん
19/06/02 14:35:27.10 hvNC8EHQa.net
初期化はちょっと違うんじゃねえかな

799:デフォルトの名無しさん
19/06/03 19:44:47.54 JpBlPJqE0.net
URLリンク(i.imgur.com)
ちんぷんかんぷんなので教えて下さい

800:デフォルトの名無しさん
19/06/03 19:47:13.69 aVpNGdHY0.net
火の玉ストレートでワロタw

801:デフォルトの名無しさん
19/06/03 19:51:23.16 NMMhu3n80.net
>>774
糞みたいな問題だな
家木臭すぎ

802:デフォルトの名無しさん
19/06/03 19:56:34.99 JpBlPJqE0.net
解決しました

803:デフォルトの名無しさん
19/06/03 19:56:39.36 vGrK+0JX0.net
もうちょっときれいに写せないのか

804:デフォルトの名無しさん
19/06/03 21:20:26.29 CuEu7mica.net
影があって見えない。
ていうか、試験中に撮影して書き込みか?
思い切ったカンニングだな。

805:772
19/06/03 22:17:42.98 V6PZ+bAi0.net
(3)のとこ、この試験問題を作った教官がどういう教え方をしているのか聞かせてくれ

806:デフォルトの名無しさん
19/06/03 22:19:26.68 V6PZ+bAi0.net
正解は *(const char **)&s なんだが解答群にねえだろ

807:デフォルトの名無しさん
19/06/04 01:35:34.87 TgdlAqGq0.net
>>781 C++11以降でもなさそうだし、回答群にあるsでいいでしょ。

808:デフォルトの名無しさん
19/06/04 07:58:43.31 e9k+jtYr0.net
タイミングがよすぎるし>>772>>774は同一人物なのかな

809:デフォルトの名無しさん
19/06/04 10:12:17.26 prB+PlYza.net
ワッチョイからすると別のようだが

810:デフォルトの名無しさん
19/06/04 10:47:57.52 PKXus+yhx.net
簡単なテストがちんぷんかんぷんな人が規約を気にするとは思えない。

811:デフォルトの名無しさん
19/06/04 11:04:10.57 eBRK1s1cH.net
【速報】金券五百円分とすかいらーく優侍券をすぐもらえる   
URLリンク(pbs.twimg.com) 
     
① スマホでたいむばんくを入手  
② 会員登録を済ませる     
③ マイページへ移動する   
④ 招待コード→招待コードを入力する [Rirz Tu](スペース抜き)     
   
今なら更に4日18時までの登録で2倍の600円の紹介金を入手    
クオカードとすかいらーく優待券を両方ゲットできます。  
    
数分で終えられるのでぜひお試し下さい。 

812:デフォルトの名無しさん
19/06/04 13:24:20.51 VVsdR08YH.net
>>786
QUOカード良いな

813:デフォルトの名無しさん
19/06/04 15:35:37.38 ZIqEmt8SM.net
>>786
複数スレに書き込みまくってID変えてレスも書き込みまくってる。

814:デフォルトの名無しさん
19/06/04 17:39:59.80 dFy1Csfg0.net
迷惑メール来るようになるっていう報告もあるからこれはスルーしたほうが良いと思う

815:デフォルトの名無しさん
19/06/04 17:46:57.34 VrCvogjT0.net
ありとあらゆるスレに貼られてるbotだから気にしなくていいぞw

816:デフォルトの名無しさん
19/06/04 17:48:42.06 rpsLXROr0.net
内容を変えてNG対策すり抜けをやろうとしているから、悪質だと考えた

817:デフォルトの名無しさん
19/06/04 18:10:41.59 QEritYjya.net
サービスの提供もとに不正行為として通報して、そいつの招待コードとやらを無効にさせられないかな。

818:デフォルトの名無しさん
19/06/04 18:49:11.42 rpsLXROr0.net
提供元も共犯だろう

819:デフォルトの名無しさん
19/06/04 20:15:40.66 dFy1Csfg0.net
これってどこの企業がやってるんだろう
普通に5chでは荒らしに近い迷惑行為だしなんとかできないかな

820:デフォルトの名無しさん
19/06/04 20:19:32.69 RBIldFVda.net
しかし500円だの600円だのしょぼいな。
PayPayみたいにずっと二割引でたまに全額当たるぐらいやらなきゃ宣伝にならんだろう。

821:デフォルトの名無しさん
19/06/04 20:43:44.67 rpsLXROr0.net
宣伝じゃなく、個人情報の収集だから

822:デフォルトの名無しさん
19/06/05 00:33:04.12 ZHHYr8Rz0.net
とてもいいアプリだからダウンロードして星つけてあげたらいいと思うよ

823:デフォルトの名無しさん
19/06/05 10:04:09.95 Fd++qFdya.net
激しいステマ

824:デフォルトの名無しさん
19/06/07 16:33:58.73 uIEpx76AH.net
真って0でしたっけ?1でしたっけ?0以外でしたっけ?1以外でしたっけ?

825:デフォルトの名無しさん
19/06/07 17:02:27.40 HLWbZT6Fa.net
>>799
bool型の1です。

826:デフォルトの名無しさん
19/06/07 17:27:02.62 RHh4qcVs0.net
0以外は真として扱われることが多いな。
0は明示的にfalseになると思う。
そのfalseの否定がtrue。

827:デフォルトの名無しさん
19/06/07 17:31:47.53 OLbvc6Nr0.net
論理演算結果を整数化したら 偽が0 真は1
整数を論理評価したら 偽が0 で真はそれ以外

828:デフォルトの名無しさん
19/06/07 17:33:03.09 sehGKr170.net
#define TRUE (1==1)
#define FALSE (!TRUE)
こんな事書いてたな
値がいくつなのかは気にしなかった

829:デフォルトの名無しさん
19/06/07 20:41:26.72 NHeyKhkN0.net
OR EAX,EAX
JZ FALSE
JNZ TRUE
こんなんか?

830:デフォルトの名無しさん
19/06/07 21:31:11.89 51aJPRpO0.net
TRUEと比較するなって先輩に言われたろ

831:デフォルトの名無しさん
19/06/07 21:37:49.54 e6zybBXY0.net
!!a == TRUE ならセーフになると思われるー

832:デフォルトの名無しさん
19/06/07 22:15:27.47 RQudHa2vd.net
論理演算では1が真なのに終了は1が異常終了なのはなぜですか?
1が正しく0が間違いというイメージなのですが

833:デフォルトの名無しさん
19/06/07 22:18:06.19 RHh4qcVs0.net
昔はintを返す習慣が多分にあったのでその習慣によるが、自分は異常終了は-1返してたな。

834:デフォルトの名無しさん
19/06/07 22:19:30.98 0dWbT8qma.net
>>807
いや、boolが戻り値なら真を成功にすることがむしろ多いと思う。
「エラーを返す」関数の需要が多いということではないか。

835:デフォルトの名無しさん
19/06/07 22:21:18.54 51aJPRpO0.net
エラーの種類を沢山返せるから

836:デフォルトの名無しさん
19/06/07 22:23:25.13 e6zybBXY0.net
正常というのは1つの状態しかないが
異常には色々な種類があるのでそれを区別するためにコードとして返したい
というのと
2値しかない真偽をどう値に配分するか
というのを同列に並べるとパニック。 C言語では別のものとして割り切る

なぜC言語では偽を0に割り当てたのか?という問いの答えを求めているのならば…
俺は知らない

837:デフォルトの名無しさん
19/06/07 22:23:54.80 Bjvb97BWx.net
>>807
正常は 0でいいけど、異常はいろいろな状態の別を報告できるようにでは

838:デフォルトの名無しさん
19/06/07 22:30:40.09 51aJPRpO0.net
ソフト会社に長年いて開発者からこの質問は初
OSインストールできませんなんてすごく高度なんだなって思った
コマンドのテストでコマンドの戻り値ってあるんですがなんですか?

839:デフォルトの名無しさん
19/06/07 22:36:39.33 0dWbT8qma.net
>>813
windowsの終了ステータスの確認の仕方とか忘れるしなあ。
言葉で出てくる結果しか見れないなんて普通だと思うわ。

840:デフォルトの名無しさん
19/06/07 22:42:11.06 xj9RlcCA0.net
0が偽なのにnoerrというイカれた慣習はどうして生まれたんだろうねぇ。

841:デフォルトの名無しさん
19/06/07 22:58:47.67 DaiiMVNnx.net
最初に誕生した OS、system/360 の JCLでも、正常は 0、警告が 4だったか 8だったかで、異常が 8だったか 16だったかだったな
z/OSでも同じだろうけど
知らんけど

842:デフォルトの名無しさん
19/06/07 23:33:27.02 sehGKr170.net
幸福な戻り値はどれも似たものだが、不幸な戻り値はいずれもそれぞれに不幸なものである。

843:デフォルトの名無しさん
19/06/07 23:33:41.86 nzmV+Edn0.net
if (error == 0)
で違和感ないじゃん

844:デフォルトの名無しさん
19/06/08 03:30:43.12 KzIynz9K0.net
0 informational
1 warning
2 error
3 severe
4 critical

845:デフォルトの名無しさん
19/06/08 11:21:36.15 5iouJYEP0.net
返り値0でエラーなしはUNIXのコマンド終了ステータス以来の慣習かな。
「正常終了」は状態が1種類しかないけど、失敗は「どう失敗したか」で
複数の状態があるから、正常で0、他の値はエラーコードってのは便利でしょ。
論理演算子の結果で true false の1と0は、論理学の数値表現を
プログラム言語にそのまま写しこんだからじゃないかと。
関数は一般にエラー状態を返り値で返す、と思っていれば
正常 == 返り値0 == false は違和感ないかと。
このルールから外れてるのは「失敗時にNULLを返す」タイプの関数で、
結構たくさん存在するのが困ったところだけど。

846:デフォルトの名無しさん
19/06/08 11:32:28.80 7CBKOF2N0.net
Cでは同一のもとして動かせてしまうが
そもそもエラーコードとboolを同一視してる時点で論外なんだが

847:デフォルトの名無しさん
19/06/08 11:38:57.76 WG7jlf5q0.net
論理型を別に設けずに整数型で代用してしまおうというアイデアはBやCの言語仕様をコンパクトに
抑えるのに役立ったが、今となってはプリプロセッサマクロと同じくらいの悪しき遺産だなぁ。

848:デフォルトの名無しさん
19/06/08 14:58:06.03 KzIynz9K0.net
え、何か問題あるか?

849:デフォルトの名無しさん
19/06/08 15:35:48.39 X+3AMWAUM.net
C99以降であれば_Bool型を使えばいいのでは?

850:デフォルトの名無しさん
19/06/08 15:41:42.45 KzIynz9K0.net
ダメだこりゃ

851:デフォルトの名無しさん
19/06/08 15:41:57.08 bm2ApAetM.net
正常時1で異常時0を返す関数が混ざってたり
正常時ポインタで異常時ヌルポ返す関数があったり
それらの関数の返り値を全部 if でチェックしててカオスだったことがあります

852:デフォルトの名無しさん
19/06/08 15:56:39.68 KzIynz9K0.net
BOOLを返す関数が負数を返したかどうか調べにゃあかんやつとかな

853:デフォルトの名無しさん
19/06/08 16:38:04.87 WG7jlf5q0.net
ワインバーグの本にあったなあ。ドル紙幣はみんな同じ色、同じサイズで見分けがつきにくいけど、
それが常識だと思っている人は、一定の確率で間違えてしまうことも世界の法則で仕方のない
ことだと思っているとか。

854:デフォルトの名無しさん
19/06/08 17:13:44.27 auwh2hzj0.net
>>827
GetMessage()の悪口はいくら言ってもよいぞ
DWORDにしとけよ

855:デフォルトの名無しさん
19/06/08 18:39:07.71 jm0tDZO60.net
>>826
カオスっていうかこれ普通じゃない?
標準ライブラリのラッパー書くとき互換性保つために0成功にするでしょ
で他のオレオレライブラリはboolという

856:デフォルトの名無しさん
19/06/08 18:53:36.19 jXs/KV+s0.net
戻り地がboolのときはtrueが成功
intのときは0が成功なんだよ

857:デフォルトの名無しさん
19/06/08 19:39:01.75 ogfAGAzJ0.net
bool型ができたのはC99のときなので

858:デフォルトの名無しさん
19/06/08 19:42:23.71 jm0tDZO60.net
boolぐらいなにもインクルードしなくても使わせてくれぽよ

859:デフォルトの名無しさん
19/06/08 19:54:54.89 ogfAGAzJ0.net
「歴史的理由」という奴

860:デフォルトの名無しさん
19/06/08 21:28:56.66 gCLo3iIIa.net
>>830
それのせいでPrelではシステムコールと同名の関数の返り値がいまいち統一取れてなかったりして、結局マニュアル見ながら個別に覚えざるを得なかったりする。
Perlはだいたいは1が成功でundefが失敗なんだけどね。(undefはCでのNULLみたいなもの。未定義を意味する。定義されてて値が0の時とは違うが、書き方によっては同じように扱えることもある)。

861:デフォルトの名無しさん
19/06/08 21:58:16.60 nbjDJ9kZa.net
今C++にあるoptionalだっけ?
あんな感じの有ってもいいな。かなりうざい感じになるから使わんか。

862:デフォルトの名無しさん
19/06/09 11:06:53.62 42ARNGRn0.net
インクルードをURLで引っ張ってこれたら面白いのに。

863:デフォルトの名無しさん
19/06/09 11:17:01.45 ZHA7gcDF0.net
一発でウイルス仕込まれそう

864:デフォルトの名無しさん
19/06/09 11:59:40.15 W83DJxDE0.net
コスパ最強の副業「動画編集」で稼ぐ方法【生ハム登場】
URLリンク(www.youtube.com)
【最強の副業】動画編集で稼ぎ続ける人の条件【未来予想】
URLリンク(www.youtube.com)
【おすすめ副業・在宅ワーク】「動画編集」は初心者でも時給1,500円狙えます。
URLリンク(www.youtube.com)
【与沢翼】動画編集素人でも本気でやれば個人で月収1000万も夢ではないですよ。
実は動画ってすぐプロと同じクオリティで作れちゃうし月収20万はすぐですよ
URLリンク(www.youtube.com)
センスのいい映像を短時間で編集する方法
URLリンク(www.youtube.com)

865:デフォルトの名無しさん
19/06/09 14:38:56.62 zgQq0a060.net
>>837
/use/include ディレクトリをNFS マウントでもしとけ。

866:デフォルトの名無しさん
19/06/11 14:18:29.61 suKt4vmPd.net
すみません、質問があります。
環境はlinuxです。
ある共有ライブラリlibA.soをロードするプログラムbがあります。
このプログラムbをlibA.so抜きでgccでビルドすることはできるでしょうか?
もちろん実行時にはlibA.soは用意します。

867:デフォルトの名無しさん
19/06/11 15:09:21.38 UmxJxqMia.net
>>841
リンクされる関数やグローバル変数が全て揃ってれば誤魔化し効くのではないかな。

868:デフォルトの名無しさん
19/06/11 16:20:37.89 X43Szptna.net
シンボルだけ定義したsoファイルを用意するのが普通ではないかと

869:デフォルトの名無しさん
19/06/11 18:35:03.43 z8NS6dzQ0.net
ダミーファイルを用意とか、かっけえな

870:デフォルトの名無しさん
19/06/11 20:38:50.54 UmxJxqMia.net
そ、そうか?

871:デフォルトの名無しさん
19/06/11 21:26:50.36 suKt4vmPd.net
ビルド用のsoファイルを用意する、でいこうと思います。ありがとうございました!

872:デフォルトの名無しさん
19/06/11 22:01:48.05 vnr40KfNa.net
スタブってやつね。
dlopen使うと基本そうなると思う。
もともと自動的なシンボル解決して


873:る場合は無視できたかも。



874:デフォルトの名無しさん
19/06/12 00:00:59.88 82Q6hISi0.net
>>847
お前は何を言ってるんだ

875:デフォルトの名無しさん
19/06/12 02:05:00.40 vWkgJgOw0.net
たぶん、DLL import, export みたいな定義ファイルさえあれば、コンパイルできるだろ?

876:デフォルトの名無しさん
19/06/12 09:25:53.48 apqCeTcNa.net
DLL? Windowsだとそうなの?

877:デフォルトの名無しさん
19/06/12 10:40:58.95 QpFBULjO0.net
a) dll import キーワードつきのヘッダでコンパイル
 DLLを読み込みシンボル解決する .lib をリンク
 実行時には dll 読み込みをやってくれる (無いと文句言う)
b) 自前で DLL読み込んで GetProcAddress で関ポにセットして、
その関ポを呼び出すラップ関数を用意
  自前ロードしてるので、実行時に無い時別の処理の記述が可能になるん

878:デフォルトの名無しさん
19/06/13 13:22:19.29 tXoihok+d.net
大学でc言語を学び始めました
ポインタが意味不明でした
何がわからないのかわからない

879:デフォルトの名無しさん
19/06/13 13:54:13.91 wTJRUi3Ix.net
メモリとアドレスの概念が分かってないからじゃね?

880:デフォルトの名無しさん
19/06/13 19:07:04.64 mXxRrk+K0.net
現実世界にポインタと同じものを説明する概念がないから簡単な説明のしようがないんだよなぁ。住所録とか余計こんがらがるし。
素直に本を沢山読んでプログラムを組んで慣れるしか無い

881:デフォルトの名無しさん
19/06/13 19:27:38.29 HQZYLHkVa.net
本にページ数がない世界?

882:デフォルトの名無しさん
19/06/13 20:56:34.51 8abVSTNa0.net
アドレスは&つけてprintfした時に出てくるやつでしょ?
箱のラベルみたいなのだとかなんとか言われた気がする
メモリは単純に容量?
別関数で計算した値をmain関数に持ってくる時にポインタを使えばreturnがいらないだとかコピーじゃなくて直接数値を変えるから処理が楽だとか書いてあるけど結局普通に代入するのに比べて利点がよくわからない

883:デフォルトの名無しさん
19/06/13 21:10:17.33 mvKDv9Bs0.net
タワーマンション

884:デフォルトの名無しさん
19/06/13 21:10:41.15 HQZYLHkVa.net
何かの容量と言ったときの「何か」がメモリです。
利点は基本的にないです。

885:デフォルトの名無しさん
19/06/13 21:22:11.61 0e3y3dPM0.net
データが存在する場所

886:デフォルトの名無しさん
19/06/13 21:44:19.75 VQ1VjdQ1M.net
みんな思い思いのモデルで遊んでるから、パパは箱モデル出しちゃうぞ

887:デフォルトの名無しさん
19/06/13 21:45:29.38 vVgcrwZV0.net
うさみみハリケーンでメモリ覗いてチートしよう!

888:デフォルトの名無しさん
19/06/13 21:52:15.32 o6WQvi940.net
天使のような微笑みに
時は立ち止まる

889:デフォルトの名無しさん
19/06/13 22:05:37.40 mXxRrk+K0.net
なんか分からない部分のコード示してもらわないと
ここの有能な人たちもどう説明したらいいか分かんないから雑談始まったがw

890:蟻人間
19/06/13 22:14:30.76 wtG0GGqp0.net
1ビットが0か1かの二通りを表せる情報量。
1バイトは0~255までの256通り(2の8乗)を表せる情報量で8ビットに等しい。
1バイトを複数並べたのがメモリーで、各バイトの位置がアドレス。

891:デフォルトの名無しさん
19/06/13 22:16:01.81 dMX2AWSU0.net
このスレにエスパーいるの?

892:蟻人間
19/06/13 22:22:12.70 wtG0GGqp0.net
アドレスに型情報を加えて、先頭アドレスを起点として配列のようにアクセス可能にしたものがポインタ。
しかし、配列は実体を要求するが、ポインタは実体を要求しない。ヌルポインタは、何も指し示さないポインタ。

893:デフォルトの名無しさん
19/06/13 22:29:06.28 o6WQvi940.net
ポインタ配列ってやると実体のない配列になるのかなw

894:デフォルトの名無しさん
19/06/14 00:57:04.32 v+vUDnm40.net
ポインタ配列


895:? ポインタの配列 *array[] 配列のポインタ (*array)[]



896:デフォルトの名無しさん
19/06/14 06:12:05.65 hJXFGwRg0.net
“メモリ”って言葉がフラッシュメモリのような、
ストレージデバイスのイメージになってるのも
説明を難しくしてる要因かもしれないね。
メモリは記憶単位ごとに数字で番地が振られていて…と言っても、
「メモリってディレクトリ構造中のファイルとして記憶するんじゃないの?」
みたいな感じに、互いの言葉の意味がチグハグで。

897:デフォルトの名無しさん
19/06/14 06:41:21.97 f7k/n5Cq0.net
RAMとROMの違いなんて今の時代説明しても分かる人の方が少ない気がする

898:デフォルトの名無しさん
19/06/14 07:27:48.00 Q6PAXFreM.net
>メモリは記憶単位ごとに数字で番地が振られていて
キャッシュメモリ「せやろか?」

899:デフォルトの名無しさん
19/06/14 07:30:51.51 0tg6L2nj0.net
URLリンク(i.ytimg.com)
URLリンク(upload.wikimedia.org)
やっぱりコレを見せれば理解しやすいんでね?

900:デフォルトの名無しさん
19/06/14 08:11:51.98 9CL7rguOx.net
>>872
磁気コアメモリと、右側はRAMACか?

901:デフォルトの名無しさん
19/06/14 08:31:34.65 0nKPup2VM.net
磁気ドラムだよ
ランダムアクセスでさえないのにメインメモリにしたとかいう

902:デフォルトの名無しさん
19/06/14 09:02:07.63 vN7LRDhO0.net
>>856
ポインタ=君と感覚を共有してる全く同性能の影分身だ。
君の価値が100万なら、影分身は1円で作れる。
ポインタのメリットは会社が君を働かせたい時、君を直接雇うと100万円かかるが、影分身を雇うと1円で済むわけだ。
影分身が働いてる間、君は家でエロゲでもしてればいい。
気をつけないといけないのは、仕事中、影分身の腕が切断されたら、エロゲやってる君の腕も切断されるし
影分身が死んだら君も死ぬ。

これ以上わかりやすい説明はないと思うが、どうよ?w

903:デフォルトの名無しさん
19/06/14 09:44:07.68 y8r4DOsw0.net
例えられても伝わらないとさらに混乱させるのが、ポインタと配列周辺の話

904:デフォルトの名無しさん
19/06/14 10:03:42.87 +nXqXsIga.net
>>875
分身と言ってしまうとそっくりな実体がもう一つあるかのように思ってしまうのではないか?
やはり実体を指し示すものを連想させる何かにした方が良いのではないか?道標とか。

905:デフォルトの名無しさん
19/06/14 10:26:13.82 6se/aPBa0.net
このように、どうわかりやすく書こうとしてもどっかに不都合が生じるのがポインタの説明
素直にコンピュータの仕組みを勉強するしかないんや・・・

906:デフォルトの名無しさん
19/06/14 10:36:21.57 9CL7rguOx.net
ポインタはWindowsのショートカットみたいなもの。
これでもまだ誤解されそうね。

907:デフォルトの名無しさん
19/06/14 11:45:14.96 suWeiIcg0.net
インデックスレジスタを拡張したもの

908:デフォルトの名無しさん
19/06/14 12:26:01.65 2kFHhEHgd.net
キャッシュとバッファの違いを教えてください

909:蟻人間
19/06/14 12:32:55.71 lQGpZUNAd.net
キャッシュは次回のアクセスを高速化するためにデータを一時的に保存しておくこと。
バッファはデータを受け止めるために、保存場所を確保するためのメモリー領域。

910:デフォルトの名無しさん
19/06/14 14:56:26.65 6Rxhp4270.net
アセンブラやらせてみる。

911:デフォルトの名無しさん
19/06/14 15:05:09.54 AQvHkPsD0.net
>>881
文脈による
汎用機


912:だと二次キャッシュをバッファストレージなんて言ったりすることもあるし



913:デフォルトの名無しさん
19/06/14 17:36:32.38 TPMloxQtM.net
>>875
本体がパンツ下ろしたら影分身も職場でパンツ下ろすんですね分かります

914:デフォルトの名無しさん
19/06/14 17:45:59.79 zWOLB0k60.net
ポインタがよくわからないんだけど、普通にメモリアドレス==ポインタって認識なの?
int i;
int *p=&i;
の時に変数iのポインタであるpっていういい方は正しいですか

915:デフォルトの名無しさん
19/06/14 17:52:24.52 f7k/n5Cq0.net
メモリアドレスは格納されるけど
メモリアドレス==ポインタっていうのは違う気がする
nullだのvoidだのもあるし

916:デフォルトの名無しさん
19/06/14 17:58:41.54 Soq0+PVxa.net
iのポインタを格納してるポインタ変数p
値自体を問題にするときはアドレスだが、プログラム中で操作の対象となってる場合はポインタって感じだな。

917:デフォルトの名無しさん
19/06/14 18:21:37.60 Js4PARtC0.net
>>886
ポインタはメモリアドレスと型もってて
メモリアドレスからのデータをその型として解釈する

918:デフォルトの名無しさん
19/06/14 18:23:47.92 zWOLB0k60.net
なるほど、なんとなくわかったありがとう。混乱の原因はポインタっていう言葉がいろんな使われ方してるからだった。

919:デフォルトの名無しさん
19/06/14 18:25:31.19 Kaq8zorwa.net
こう書くとまた荒れそうだが、ポインターとはアドレスが入った変数である、というのは正しい。
NULLは0番地を特別扱いしてるだけだし、void *もあくまでアドレスだ。

920:デフォルトの名無しさん
19/06/14 18:32:50.01 N06YB3IUM.net
>>887
nullはまだしもvoidは関係なくね?

921:デフォルトの名無しさん
19/06/14 18:34:58.75 Js4PARtC0.net
荒れる要素なくない?
メモリアドレスを保持する整数と型を組合せてあるだけだし
void*はアドレス保持するだけの変数って意味じゃないの

922:デフォルトの名無しさん
19/06/14 18:35:21.76 6z9b86iK0.net
void *p;
p++ を許すのは GCC拡張だっけか

923:デフォルトの名無しさん
19/06/14 18:37:46.52 AQvHkPsD0.net
>>891
「正しい」とか書くと荒れる元にしかならん
(初心者のうちは)…「という理解でいい」ぐらいにしとき

924:デフォルトの名無しさん
19/06/14 18:39:36.73 BA+tS0rQa.net
>>891
NULLの件はそれ逆だろう。
実際の0番地を特別扱いにしているのではなく、「どこも指さない特殊なアドレス」を表記するために整数0を使用しているだけで、0番地が特別な訳ではないはず。まあ実際にメモリ割り当てで0番地を割り当てることはしないだろうけど。
void*も、型を指定しないポインタを表すのに使っている型の指定であり、アドレスというのはおかしい。

925:デフォルトの名無しさん
19/06/14 18:45:34.86 Js4PARtC0.net
>>894
サイズどういう扱いなのそれ

926:デフォルトの名無しさん
19/06/14 18:48:29.67 6z9b86iK0.net
>>897
確かポインタ演算時は1バイト (char) 扱いだったかな?

927:デフォルトの名無しさん
19/06/14 18:52:58.09 Js4PARtC0.net
1バイトなんか
まあそりゃそうか

928:デフォルトの名無しさん
19/06/14 21:41:25.35 WbpzR08B0.net
void*なんていらなくね?char*でいいじゃん
構造のわからないものは「バイト列」って意識でしょ?

929:蟻人間
19/06/14 21:47:11.03 Qn7Uv1x90.net
>>900
void *がないとmemcpyに引数を渡すとき面倒。

930:デフォルトの名無しさん
19/06/14 21:51:26.70 6z9b86iK0.net
double * には double * だけを許し char * や strucut foo * を渡したらアカンと
要求される型を厳しくチェックしようとすると
「ポインタだったら実体の型は何でもいい」 という指示を char * に含ますわけにはいかない

931:デフォルトの名無しさん
19/06/14 21:52:14.30 sIZagWQx0.net
汎用ポインタがchar*型になってたらコードレビューは絶対に通さないわ

932:デフォルトの名無しさん
19/06/14 22:42:50.69 6se/aPBa0.net
汎用ポインタというかvoid型という概念そのものが嫌い。
全てを厳密にやれ。言語を作る時点でまず関数に戻り値を強制すべきだったんだ。
ポインタわからん軍の原因はvoid型とかいう曖昧なせいなの�


933:ェあるせいなのも一理あろうて。



934:デフォルトの名無しさん
19/06/14 23:06:06.10 sIZagWQx0.net
>>904
関数型言語に行ってらっしゃい

935:デフォルトの名無しさん
19/06/15 00:02:16.99 n7CfuAo60.net
Kotlin もよろしく

936:デフォルトの名無しさん
19/06/15 01:25:34.80 RN+u9pJY0.net
windowsにおいて
setLocale(LC_ALL, "en_US.UTF-8");
が成功する環境と失敗する環境があるのですが何が原因かわかりません。。何かご存じの方いらっしゃらないでしょうか?

937:デフォルトの名無しさん
19/06/15 09:25:25.61 oZ4xCIwS0.net
>>904
お前の好き嫌いなんてどうでもいいし、よくわからん時点ならvoid*なんて無視しとけばいいだけ
この手の人は何故か全部を一気に理解しようとするけど今どきの言語仕様でそれやったら終わらんよ

938:デフォルトの名無しさん
19/06/15 09:37:31.78 pAE5sudp0.net
「俺の考える最強に分かりやすいポインタの説明」


・・・無理

939:デフォルトの名無しさん
19/06/15 10:05:45.19 QD7Sd0bs0.net
>>907
OSは?両方ともWindows10?

940:デフォルトの名無しさん
19/06/15 10:23:13.60 T0BSudQv0.net
>>908 void君だろ
C言語なら俺に聞け 148
スレリンク(tech板:37番)
37 名前:デフォルトの名無しさん (ワッチョイ f94f-yqSl)[sage] 投稿日:2018/09/22(土) 01:42:06.64 ID:16ZpsTnK0
>>36
マジでIDE使え。
そして貼るときはlanguageをCにしとけ。シンタックスハイライトが変わるから。
で、どれが分からんの?
> enter
> find
> delete
> show_all
> delete_all
mainはこの際分からなくていい。
最初に理解しないといけないのは show_all だ。
ただし細かいことを言ってもキリがないが、
> void show_all(void)
なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
さらに酷いのは show_all 内でグローバル変数 address を掴んでいること。
普通は void show_all(tag_address* ta) だよ。
そうじゃないと複数のリストがあったときに使い物にならないだろ。
マジな話、このソースのレベルの本なら捨てた方がいい。
俺は大学の教材がいいと思うぞ。
(読んでないが)リストならググったら東工大とか出てきた。
URLリンク(www.is.titech.ac.jp)

941:デフォルトの名無しさん
19/06/15 11:55:35.29 hahimQeS0.net
懐かしいな、void君

942:デフォルトの名無しさん
19/06/15 13:59:23.10 RN+u9pJY0.net
>>910
コメントありがとうございます。
8と10で成功する端末があることを確認しています。失敗する端末は今のところ10だけです。
そして
SetConsoleOutputCP(65001);
を使用することで失敗する端末でもUTF-8をコンソールに表示でき、一応目的は達成できました。
調べてみると、結局のところwindowsではsetlocaleで2バイト以上文字は設定できないとのことだったのですが、ではなぜ成功する端末があるのか……

943:デフォルトの名無しさん
19/06/15 15:49:06.56 fUxHfD4R0.net
謎だな

944:デフォルトの名無しさん
19/06/15 16:57:06.86 RWV4c9qt0.net
引数voidって古いシステムの保守でたまに見るな

945:デフォルトの名無しさん
19/06/15 16:59:05.33 5ne/m9/q0.net
と、古いシステムの保守なんかやったことねえやつがぬかすか

946:デフォルトの名無しさん
19/06/15 18:17:17.87 ulIUfSMj0.net
引数voidは今でも普通に使うけどな

947:デフォルトの名無しさん
19/06/15 18:22:29.22 5ne/m9/q0.net
void show_all(); なんて書くやつ見かけたらなるべく距離を置く

948:
19/06/15 18:40:21.75 8bW7ANPO0.net
>>918
C++ ではそれは当たり前ですが…

949:デフォルトの名無しさん
19/06/15 18:42:04.96 fAAVk5UIM.net
>>918の場合
C++なら問題ない
C言語だとちょっと不味い

950:デフォルトの名無しさん
19/06/15 18:46:57.27 5ne/m9/q0.net
おまえからも距離を置きたいぜ
ここをどこだと思っている
C++なら無問題などと言わねばわからぬ者がいるとでも思っているのか

951:デフォルトの名無しさん
19/06/15 22:30:32.42 BY4KYcRQ0.net
とりあえず、シングルステートでも返り値をboolにする俺がやってきましたよ。

952:デフォルトの名無しさん
19/06/16 02:14:21.54 wRD2pOBha.net
ケースバイケースで使い分ける

953:デフォルトの名無しさん
19/06/16 08:10:06.75 ORkp7ynDM.net
>>921
>>918の意図が分かってない者がいるぞ
さあどうする?

954:デフォルトの名無しさん
19/06/16 10:35:26.32 jvyHVZd00.net
>>924
世も末だな
困ったもんだ

955:デフォルトの名無しさん
19/06/16 11:22:43.26 RqGVrKm70.net
大丈夫だよ
ここを見ながらシステム作っている奴はいないから

956:デフォルトの名無しさん
19/06/16 13:20:19.90 X7GbKeYn0.net
Cはvoid省略すると可変長引数扱いになるんじゃなかったっけ?
C++は省略してもvoidだけど

957:
19/06/16 13:35:27.88 gDHKfsB60.net
>>927
無指定でどうこう、というのは確か C89 までの話だったかと
C99 では C++ と同じく省略しても void と記憶しています

958:デフォルトの名無しさん
19/06/16 13:51:25.10 Mp4zqsM90.net
>>928
破壊的変更が行われた仕様が回避できるなら回避すべきだな

959:デフォルトの名無しさん
19/06/16 13:58:56.49 VBKycPxl0.net
>>928
記憶違いでしょ。変わってないよ。違うと言うなら出典確認してから来てね。
URLリンク(kikakurui.com)
> ...関数定義の一部でない関数宣言子の識別子並びが
> 空の場合,仮引数の個数及び型の情報がないことを指定する。

960:デフォルトの名無しさん
19/06/16 15:14:33.98 +bML8jLFa.net
>>915
新しく作るプログラムでも引数なしならvoidにするよ。
まあこの頃Cで作ることそのものが減ったけどな。

961:デフォルトの名無しさん
19/06/16 15:41:14.25 rIa5AgZza.net
入力がない関数ってのは関数ではないな

962:デフォルトの名無しさん
19/06/16 15:51:28.54 eI7bdJXk0.net
>なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
こんな汚物が上から目線で何かもの言ってるかと思うと反吐が出る
さっさと消えてほしい

963:デフォルトの名無しさん
19/06/16 16:33:52.45 wZzXbGgB0.net
>>932
なぜ入力がないと思ったんだ?

964:デフォルトの名無しさん
19/06/16 16:48:40.62 xMbXVdd30.net
DCL20-C. 引数を受け付けない関数の場合も必ず void を指定する
URLリンク(www.jpcert.or.jp)
を見ると(かなり読み解きにくいんだけど)…
プロトタイプ宣言では
int func(void); ... 引数0個
int func(); ... 関数呼び出しでの引数の整合をチェックしない
関数定義では
int func(void) {...} ... 引数0個
int func() {...} ... 引数0個
って具合に func() の解釈が一貫していない、
だから引数0個の関数は同じ形になるようにvoidをつけましょう、
という話に思える。
この辺が議論の混乱を生んでるんじゃないかな。
ついでに関数定義の int func() {...} の形式は廃止予定とも出てる。
プロトタイプの方は廃止予定ではない、ってことかな。

965:デフォルトの名無しさん
19/06/16 17:08:16.47 jvyHVZd00.net
そこでjpcertを持ち出すのは興醒めだ
どっかの馬の骨が「こうすべき」と主張してるってだけな話は
現実のマシンの動きとそれ束縛しているiso/iec9899でどうなのかという話とは論点が違う

966:935
19/06/16 17:32:48.77 xMbXVdd30.net
>>936
JPCERTを引用したのは「プロトタイプ宣言と関数定義とで
引数


967:部が空の関数 func() の引数の解釈が違う」って話を 根拠つきで引き出すためでな。 >>927-930 あたりの流れを受けて。 規格の文章が並べて載ってるので都合が良いのだ(読みにくいけど)。 実際のところ、JPCERTのルールっていうか提案には 俺も全面的に賛成してるわけじゃない。むしろ強く反発する部分もあったり。



968:デフォルトの名無しさん
19/06/16 19:00:02.87 jvyHVZd00.net
必要ねえじゃん
iso/iec9899の条文を引用して
その箇所がどのように解釈できると
自分の言葉で言えばいいのを
虎の威を借る形でサボる怠慢を
読まされる側は付き合ってらんねー

969:デフォルトの名無しさん
19/06/16 19:52:17.11 5fyh92Dva.net
>>932
そうだね。関数ではないね。しかしCだと処理をまとめる方法が関数しかないから仕方がないね。

970:デフォルトの名無しさん
19/06/16 20:02:46.68 5fyh92Dva.net
まあしかし getchar() みたいにプログラムとは無関係な所から取ってきた値を返すとか、バッファやstatic変数で外部からアクセスできない変数の内容を返すみたいな処理は必要だから引数なしも必要だ。
グローバル変数やハードウエアの初期化処理だけまとめて書きたいなんて時にも使える。

971:デフォルトの名無しさん
19/06/16 20:22:18.78 6QFVwEqYd.net
○○Initialize()
的な関数の存在に違和感ないんだが

972:デフォルトの名無しさん
19/06/16 20:26:17.96 rIa5AgZza.net
クラスのメンバーの操作だとしても、だったらそのクラスのコンテキストを渡すのが正しいだろうとは思うけどね。
現実としてはまあ規模による。

973:デフォルトの名無しさん
19/06/16 20:40:48.32 Mp4zqsM90.net
プログラムの関数は数学の関数とは微妙に違うから仕方ない
仕方ないと思えない奴らが関数型言語を作った
兎に角Cでは本来の関数に制限するのは事実上不可能

974:デフォルトの名無しさん
19/06/16 20:47:50.76 EhqtZL1+0.net
functionって関数の他に機能って意味もあるけど、英語圏の人はどちらの意味で使ってるんだろうね?

975:
19/06/16 21:15:12.39 gDHKfsB60.net
>>944
多分語義をわざわざ意識していないと思われ

976:デフォルトの名無しさん
19/06/16 21:19:48.09 paRCIAHRa.net
>>942
オブジェクト指向言語のクラスだとプロパティでゲッターやセッター作る事があるが、ゲッターは普通は引数なしだな。
で、そういう言語ではだいたいはメソッドの引数なしで ()にしとけばC言語での(void)と同じ意味になる。

977:蟻人間
19/06/16 21:39:10.07 KLVL0nwc0.net
機能という意味で言いたいときは、functionalityという単語もある。

978:デフォルトの名無しさん
19/06/16 22:26:00.96 rIa5AgZza.net
ゲッターセッター自体が、本当にそれ要るのかって思うこと多いよ。
手元にインスタンス持ってるわけだしさ。

979:デフォルトの名無しさん
19/06/16 23:14:47.03 2lhSAUjOM.net
ゲッターセッターはインスタンス変数を隠蔽化することでインスタンス間の結合強度を下げるのが目的
なんでもなんでもインスタンス内部の構造に直接アクセスするとOOPの意味がない

980:デフォルトの名無しさん
19/06/16 23:22:32.20 rIa5AgZza.net
いや、ゲッター使うんだったら隠蔽できてないじゃん。

981:デフォルトの名無しさん
19/06/16 23:34:39.49 Fv7+hlk/0.net
昔ゲッターセッターってスレッドセーフにするための仕組みだと思ってた。
それくらいしか意味が思いつかなかった…

982:デフォルトの名無しさん
19/06/16 23:43:48.77 3o8UCwiCa.net
そうね、なんか前後に処理を入れるくらいの使い方はある。
でもそもそもその値を使う処理をそのクラスに持たせるのが隠蔽ということだね。

983:デフォルトの名無しさん
19/06/16 23:45:38.60 7nwjMCFt0.net
今の仕組み上での利点としては
GetterSetter作ることで
インターフェースに適合させれるようになる
Cは知らん

984:デフォルトの名無しさん
19/06/17 00:04:18.25 0K02i6cy0.net
Cのスレで


985:言っても仕方ないが オブジェクト指向においてクラス外からフィールドに直接アクセスするのは禁じ手だぞ



986:デフォルトの名無しさん
19/06/17 00:10:42.98 seiOMGnS0.net
getter/setterなんてうざいだけだぜ
メンバ変数直でいいじゃん

987:デフォルトの名無しさん
19/06/17 00:23:14.51 YSrJE9j8a.net
>>954
そうそう、だからゲッターは駄目なんだよね。
C++でclassとstructのアクセス範囲が異なる理由がわかってない人が多すぎる。

988:デフォルトの名無しさん
19/06/17 00:26:17.86 0K02i6cy0.net
>>955
お前には一生オブジェクト指向は無理だな

989:デフォルトの名無しさん
19/06/17 00:39:11.63 YSrJE9j8a.net
まあ、ゲッター使うのはバカ。
データとメソッドを集約しないのはオブジェクト指向ではない。
ゲッターとセッターしかないオブジェクトなんて構造体で充分。

990:デフォルトの名無しさん
19/06/17 01:11:23.59 J2deS77t0.net
たしかPythonだとgetterもsetterも推奨されてないんだっけ?

991:デフォルトの名無しさん
19/06/17 02:13:20.34 BSqpudUb0.net
文字列クラスで文字数返すやつなんかはゲッターの一種だが、ああいうのは必用だよな。
文字数指定する事が出来るようにする場合もセッター必用だよな。

992:デフォルトの名無しさん
19/06/17 06:18:25.03 6C3tyyZH0.net
データメンバ直でもラッパーを挟めるなら問題なし

993:デフォルトの名無しさん
19/06/17 07:27:38.45 yl5KJ/vEM.net
問題ないというよりも下手な設計をとりあえずカプセル化する時はラッパー被せて誤魔化すしかない

994:デフォルトの名無しさん
19/06/17 08:27:04.42 ikLTlFyV0.net
ゲッタって仮想関数にする?

995:デフォルトの名無しさん
19/06/17 08:52:31.79 sn1adIo3a.net
ラッパーって関数に対して被せるもんだろ?
メンバー変数のラッパーってなんだよ

996:デフォルトの名無しさん
19/06/17 08:57:03.61 mR1b1vjg0.net
「メンバ書き換えたから更新よろしくな関数」の呼び出しで
やっと内部状態が変更するようなしくみ?

997:デフォルトの名無しさん
19/06/17 09:09:34.98 8UjaS7YF0.net
>>960
ゲッターとセッターは使わないのが主流
とくにゲッターとか名前からしておっかねーだろ

998:デフォルトの名無しさん
19/06/17 09:34:11.11 sn1adIo3a.net
真とかエンペラーとかいろいろあるしな

999:デフォルトの名無しさん
19/06/17 12:37:41.39 WHxj8IY7a.net
>>966
え?でも値のセットや取得時に何か処理が必要なやつはゲッターやセッターではないの?
名前がそれっぽくなくて普通のメソッドだったとしても機能としてはそうなるよな。

1000:デフォルトの名無しさん
19/06/17 12:44:11.30 6pEy3XEna.net
>>968
だから、何故値を取得する必要があるのかと

1001:デフォルトの名無しさん
19/06/17 13:06:30.69 0K02i6cy0.net
値を取得する必要ガーとか馬鹿なのか?
主要言語の標準ライブラリにGetterを含まないクラスとかまず無いぞ

1002:デフォルトの名無しさん
19/06/17 13:27:51.70 6pEy3XEna.net
>>970
引数のvoid見たこともないのによくそんなこと言えるな…

1003:デフォルトの名無しさん
19/06/17 13:33:44.73 WHxj8IY7a.net
>>969
例えばファイルデスクリプタのようなものもそのデスクリプタによって識別されるファイルに関する情報の読み書きをするオブジェクトと言えるが、それ使ってファイルのバイト数を取得するとかデータを読み書きするとか、普通にやるよね。

1004:デフォルトの名無しさん
19/06/17 13:42:27.76 qKjcjk6x0.net
猿でもわかるポインタって本誰か出せよ

1005:デフォルトの名無しさん
19/06/17 14:24:17.06 6pEy3XEna.net
>>968
そのオブジェクトの中で密接にデータと関連する処理だったらゲッターは使わんでしょう。this->hogeを直接使うだけ。
あとたぶんあなたの場合はセッターゲッターの神髄を知らんと思う。単に構造体のメンバーにアクセスするだけのメソッドをイメージしてもらえれば。

1006:デフォルトの名無しさん
19/06/17 14:25:01.27 6pEy3XEna.net
974は972あてね

1007:デフォルトの名無しさん
19/06/17 14:25:36.67 FBMbqlks0.net
>>968
URLリンク(dotup.org)
ゲッターはあぶない

1008:デフォルトの名無しさん
19/06/17 14:40:56.45 lfEwbGXOM.net
同一インスタンス内なら余計なことしなくても直接アクセスできる
セッターゲッターは他のインスタンスの変数にアクセスするための手段
オブジェクト間のメッセージパッシングにセッターやゲッターを利用する

1009:デフォルトの名無しさん
19/06/17 14:41:55.67 WHxj8IY7a.net
>>974
あー。それでもリードオンリーにしたい時に言語にその機能がないならゲッターだけ作るよね。
Kotlinの場合はvalで済んじゃってしかも自動でゲッター作られてるけど。
で、真髄って何?

1010:デフォルトの名無しさん
19/06/17 15:00:44.76 6pEy3XEna.net
>>978
リードオンリーとか言わず、読ませなきゃいいじゃん

1011:デフォルトの名無しさん
19/06/17 15:49:21.53 WHxj8IY7a.net
>>979
上で書いた文字列クラスの場合の文字数とかファイルのバイト数とか、外部から読めないとまずいものがあると思うんだが。

1012:デフォルトの名無しさん
19/06/17 15:57:28.98 6pEy3XEna.net
>>980
たとえばstd::stringのメソッドでgetってついてるのget_allocatorとgetlineくらいだよね。setなんてないし。
ゲッター感のあるやつ無くない?要らないのでは?

1013:デフォルトの名無しさん
19/06/17 16:10:03.98 qeDnhEK2M.net
メンバー変数はreadonlyなどの属性ではなくてprivateアクセス権限を設定して他オブジェクトから隠蔽するのが一般的

1014:デフォルトの名無しさん
19/06/17 17:25:37.86 0K02i6cy0.net
なんでC++とかいう後付けのオブジェクト指向もどき言語で延々と語ってるんだろうか…

1015:デフォルトの名無しさん
19/06/17 17:48:43.23 6pEy3XEna.net
>>983
そりゃもう、javaについで保守的だから。
他の意識高い感じの言語だとゲッターセッターなんて発想はありえないでしょ。

1016:デフォルトの名無しさん
19/06/17 17:52:05.72 0K02i6cy0.net
>>984
保守的?単なる継ぎ接ぎの欠陥言語だぞ
C#だとプロパティで隠蔽されてるが結局はGetter/Setterだな

1017:デフォルトの名無しさん
19/06/17 18:00:37.93 6pEy3XEna.net
>>985
つまり、Cの構造体アクセスは実質ゲッターセッターだという主張か?

1018:デフォルトの名無しさん
19/06/17 18:01:53.33 0K02i6cy0.net
>>986
お前は何を言ってるんだ…

1019:デフォルトの名無しさん
19/06/17 18:11:27.38 6pEy3XEna.net
>>987
引数void馬鹿を馬鹿にしてんだよ。わからんか?

1020:蟻人間
19/06/17 18:13:51.25 Qf1//+vQd.net
そろそろ次のスレ

1021:デフォルトの名無しさん
19/06/17 18:24:49.71 3L1/L9kLa.net
>>981
うーん。C++のクラスで喩えられてもすがわからんなあ。C++この頃全然やってないし。
昔ちょっとC++Builder使ったことあるがDelphiの延長線上の使い方しかしなかったし。
とりあえずJavaで言うとそれは何にあたるんだ?
Kotlinでもいいぞ。

1022:デフォルトの名無しさん
19/06/17 18:26:16.26 3L1/L9kLa.net
すが、じゃねえ、すぐだ。
スマホだと間違いが変になるな。

1023:デフォルトの名無しさん
19/06/17 18:28:01.53 3L1/L9kLa.net
次スレ
C言語なら俺に聞け 152
スレリンク(tech板)

1024:デフォルトの名無しさん
19/06/17 19:42:03.79 biel+EqR0.net
>>992
>>2-3 あたりの
「次スレを作るときは…」の説明を書き足さなくて良いのかしら?
自分、その辺の正しい立て方を知らず下手に書き加えられないので指摘だけ。

1025:デフォルトの名無しさん
19/06/17 20:01:23.71 vIcnvKOP0.net
IDを非表示にする場合
!extend:none::1000:512
IDを表示し、強制コテハンは表示しない(5ch標準設定と同じ)
!extend:checked::1000:512
IDを表示し、IPアドレスを表示
!extend:checked:vvvv:1000:512
IDを表示し、強制コテハンを表示
(レスの名前欄に「ワッチョイ」「スプー」「ササクッテロ 」などのニックネームがつく)
!extend:checked:vvvvv:1000:512 ← 今はこれ
IDを表示し、IPアドレスと強制コテハンを表示
!extend:checked:vvvvvv:1000:512
RONIN使えばまた表示を消せるので、強制とは言いがたいが

1026:デフォルトの名無しさん
19/06/17 20:16:07.33 /ODDlXVN0.net
ああワッチョイ消してる奴ってRONIN使ってるのか
知らなかったな

1027:デフォルトの名無しさん
19/06/17 20:27:33.84 IK9o4iD50.net
密結合を避ける

1028:
19/06/17 20:55:12.93 mDiaA7dQ0.net
>>995
RONIN 餅ですがワッチョイの消し方がわからないのです、消すつもりもないのですが…

1029:デフォルトの名無しさん
19/06/17 21:23:19.93 J2deS77t0.net
名前欄に!slip:verboseじゃないの?
コテハンとかはどうなるかまでは知らないけど

1030:
19/06/17 21:26:41.57 mDiaA7dQ0.net
>>998
どれどれ、試してみましょうか…

1031:デフォルトの名無しさん
19/06/17 21:29:58.20 6C3tyyZH0.net
>>945
そんなことはどうでもいい
C99ではどうたらを早く説明しろ
 逃 げ ん な こ ら !

1032:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 76日 10時間 6分 21秒

1033:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch