[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/22 11:29 / Filesize : 258 KB / Number-of Response : 1018
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 158



1 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 12:11:46.61 ID:xxeaCAplM.net]
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

C17
www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

C11
www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 157
https://mevius.5ch.net/test/read.cgi/tech/1624846971/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

610 名前:デフォルトの名無しさん mailto:sage [2022/06/02(木) 20:43:06.06 ID:9S2EfN690.net]
プログラマー三大美徳
怠惰、短気、傲慢

611 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 06:04:19.89 ID:2JsQlaOH0.net]
傲慢か
既存のコード無視して上書き的なメンテするやつか?

612 名前:デフォルトの名無しさん (ワッチョイ abae-11kL) mailto:sage [2022/06/03(金) 06:39:00 ID:2JsQlaOH0.net]
>>598
コーディングシート使って機械語を直打ちしてた俺に言わせると
アセンブラも贅沢品だぞ

613 名前:デフォルトの名無しさん (ワッチョイ 5110-yO3c) mailto:sage [2022/06/03(金) 07:54:41 ID:nRSHAlo70.net]
DOS時代にコプロセッサとか言うのあったけど、実際に使われてたの?
解説書を見ること無くWin時代に入っちゃって。

614 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 08:05:52.15 ID:4GI8EAsla.net]
FPUはあるとないで全然違ったよ

615 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 08:08:00.81 ID:AsLopwGrM.net]
今でもARMのFPUとかいろいろ使われてるよ

616 名前:はちみつ餃子 mailto:sage [2022/06/03(金) 09:38:08.46 ID:ysQR9TY90.net]
>>592
Tiny C Compiler はプリプロセスも含めてワンパスで処理するよ。
処理が各段階に分離されてないのでコンパイラのソースコードが読みづらいらしい。

617 名前:はちみつ餃子 mailto:sage [2022/06/03(金) 10:19:43.88 ID:ysQR9TY90.net]
GPU もある種のコプロセッサと言えなくもない。 そういう分類の仕方はあまりしないが……。

618 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 13:47:50.04 ID:jxOrvhuY0.net]
当時、コプロセッサを「子プロセッサ」だと思ってたのを思い出す。



619 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 19:52:40.79 ID:tmTTQ0Rod.net]
>>603
486から標準でCPUに組み込まれて
今では自動的に使われていることになる

620 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 19:59:24.89 ID:jmq+XGTN0.net]
PentiumのFPUバグ…

621 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 20:14:45.52 ID:sSA68QUoa.net]
487とは

622 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 20:48:03.52 ID:LlSBEtTM0.net]
かつてのARMはFPUどころかMMU、Cacheまでコプロ命令で制御してたな。

623 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 20:53:33.97 ID:/AcAT3MUa.net]
>>611
487は468SX(486DXの浮動小数点ユニット無し版)用のコプロやね
実態は486DXで装着すると468SXを乗っ取って全部487で実行しちゃうからCo-って感じじゃないけど

624 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 02:34:40.58 ID:YsWbAm+I0.net]
『コプロ』なるLSIを追加すると、掛け算を割り算が使えるようになる。

8~16ビット全盛時代、その文句の意味が分からなかったなあ。
BASICで普通に四則演算していたから。

625 名前:デフォルトの名無しさん (ワッチョイ c6ae-+66E) mailto:sage [2022/06/05(日) 05:54:10 ID:7J0TRviH0.net]
コプロラグニー

626 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 06:54:01.45 ID:pIMmlsGTd.net]
>>614
何もかも間違ってるw

627 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 07:36:26.69 ID:AvwHMxMpa.net]
>>614
未だに分かってないな

628 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 07:41:32.89 ID:7J0TRviH0.net]
CPUが電卓を使うというのが何ともミステリアスだった



629 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 16:32:55.98 ID:qbvku5vVd.net]
**が理解できない
教えてくだちい

630 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 21:07:32.00 ID:1f/zEEFPd.net]
ポインタのポインタ?

631 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 21:24:19.81 ID:7xDnzGS8M.net]
間接参照の間接参照だろ
経験豊富なら余裕で見分けられる

632 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 21:37:13.48 ID:v7exk6pA0.net]
ポインタは記法が悪いよ
関数ポインタはもっと悪い

633 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 22:15:21.61 ID:uQ+SySK50.net]
宣言のときの * と、指し先の実体を求める *

634 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 23:45:42.93 ID:9jLV7J2l0.net]
a***b

635 名前:デフォルトの名無しさん [2022/06/08(水) 02:10:57.84 ID:KYIfcmSY0.net]
c=a/*b;

636 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 07:54:23.07 ID:CNk0rgMY0.net]
int a=1;
int *b=&a;
int **c=&b;
int d=0;
d=**c; /* d == a */

637 名前:619 mailto:sage [2022/06/08(水) 08:41:18.56 ID:NWnFU//jd.net]
少しわかった気がします
試してみて理解します
皆さんありがとうございます

638 名前:デフォルトの名無しさん [2022/06/08(水) 16:31:44.77 ID:KT22GtKja.net]
関数のポインタとか
関数のポインタを引数に持つ関数のポインタとか



639 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 17:05:53.27 ID:V/Z/RpWDF.net]
typedefすればいい

typedef int AAA_FUNC( int, char *, ...);

int AAA_caller( int, AAA_FUNC*);

640 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 11:32:24.20 ID:ZhHr/cTg0.net]
>**
なんで char **argv が思い浮かばなかったかなぁ・・・。

641 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 13:06:08.29 ID:0WQEetb00.net]
char *argv[]という初心者をいたぶる陰険な罠を避けたかったんじゃね?

642 名前:デフォルトの名無しさん [2022/06/09(木) 15:57:22.96 ID:lMNj+E1f0.net]
GNU MakeよりCMakeが優れてるのはどの辺でしょうか?

643 名前:はちみつ餃子 mailto:sage [2022/06/09(木) 16:49:53.93 ID:k8dtcEck0.net]
>>632
CMake はメタビルドツールなので make と比較するようなものではない。
CMake を使う多くの場合で make も使う。

644 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 17:00:06.87 ID:lMNj+E1f0.net]
>>633
そうなんですね。ありがとうございます

645 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 11:33:59.29 ID:rZTjX0hE0.net]
宣言/デリファレンスの記法が悪いというより、=が悪い
両辺を等値(あるいはそうする=代入)というセマンティクスと解離してる

646 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 11:41:37.01 ID:rZTjX0hE0.net]
初期化の=は左辺ではなく、左辺で宣言されるものを指してるわけで、頭の中で=以外の記号に置き換えて読むといいかも

647 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 13:18:43.35 ID:PT4Yy0z80.net]
=と==は、はっきり区別されてるだろ
連動して常に等しいという規則ならマクロでやればいいし

648 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 13:19:17.11 ID:HL4tZsFs0.net]
A=1
B=2
C=3
A=B=C
PRINT A,B,C



649 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 16:02:05.50 ID:5CLHXu7x0.net]
>>638
BとCが等しいかの比較結果が A に入る

650 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 22:32:37.38 ID:ExBywScCd.net]
C言語ではA=B=C;でAとBにCの値が入るはずだが

651 名前:デフォルトの名無しさん (オッペケ Sr87-vhci) mailto:sage [2022/06/11(土) 02:33:23 ID:yqb/24klr.net]
Cの比較は==だからね

652 名前:デフォルトの名無しさん (ワッチョイ cfae-/e9c) mailto:sage [2022/06/11(土) 04:29:30 ID:3J9oG0Sq0.net]
BASICだろ

653 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 08:08:56.72 ID:5lUjqa1id.net]
なんのスレ

654 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 08:27:12.87 ID:TYekU7UkM.net]
C
A=1, B=1, C=1
BASIC
A=-1, B=1, C=1

655 名前:デフォルトの名無しさん [2022/06/11(土) 15:01:54.40 ID:s3NqXqGx0.net]
ちょー初心者

引数付きの関数で引数が空のときにも意味を持たせたい
nanntoka(char adress)なんて関数で
呼び出し側がnantoka()と書いたときも意味を持たせる場合どうすりゃいいの?
null判定でいいんですか?

656 名前:はちみつ餃子 mailto:sage [2022/06/11(土) 15:07:25.17 ID:D3tfzU/30.net]
>>645
C では出来ない。

657 名前:デフォルトの名無しさん [2022/06/11(土) 15:15:18.40 ID:s3NqXqGx0.net]
だよねー
やっぱ数値は工夫のしようがないから無理なのかー
やー助かりました

658 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 15:45:32.03 ID:NTE9LoY80.net]
C++なら出来るんだっけ。



659 名前:デフォルトの名無しさん [2022/06/11(土) 15:48:15.36 ID:nZnmEekY0.net]
C++にはデフォルト引数があるし
オーバーロードもできる
Cでできるかは知らん

int f(const char*s = nullptr);

660 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 16:27:10.38 ID:dptRvNRm0.net]
普通にはできないからやるな

(1) printfみたいにやる方法
(2) __VA_ARGS__でやる方法
があるぞい

661 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 17:10:24.92 ID:t7XDMYlk0.net]
>>650
printfみたいな可変引数でも第一引数は必要なので純粋に引数なしってのはできなかったはず。

662 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 17:22:53.63 ID:lqPwOW/ya.net]
_Genericとかみんな使う?

663 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 17:28:25.28 ID:YjAHf+RK0.net]
printf(NULL);

悪魔の召喚

664 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 05:58:21.10 ID:rhQkMiRe0.net]
>>651
できるぞ
第一引数なしで可変引数にするときは
void func();
と、省略記号なしで宣言する

ただし言うまでもないが
func();
で呼び出したときの第一引数は不定なので
使い途はない

665 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 07:27:33.25 ID:Tbig4rXQd.net]
プロトタイプ省略すればなんでもできるw

666 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 08:41:18.11 ID:LzXoNMHn0.net]
>>654
> nanntoka(char adress)なんて関数で
って書いてあるのに...

667 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 15:51:07.84 ID:rhQkMiRe0.net]
>>656
> 呼び出し側がnantoka()

とも書いてあるだろ
何が言いたい?

668 名前:はちみつ餃子 mailto:sage [2022/06/12(日) 16:04:25.30 ID:7muDz8Uq0.net]
>>654
> 第一引数は不定なので

いいえ。 未定義動作です。



669 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 16:07:16.41 ID:LzXoNMHn0.net]
>>657
勝手に端折るなよ、 書いてあるのは
> 呼び出し側がnantoka()と書いたときも意味を持たせる場合どうすりゃいいの?
で、答えはできない
つまり
>>654 > できるぞ
がアホだってことな

670 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 16:17:07.73 ID:2T6Ast9Ed.net]
>>654
>第一引数なしで可変引数にするときは
可変引数になってないね
全然意味のない書き込みだね…

671 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 06:48:01.95 ID:BOW2YZM80.net]
>>658
不定の値にアクセスしたら未定義の動作だね
何が言いたい?

>>659
幼児レベルの罵倒語が必要か?
654は正しいのか誤っているのかどっちだ?

>>660
では聞くが可変引数って何だ?
JIS X3010にそんな用語はないが

672 名前:デフォルトの名無しさん [2022/06/13(月) 08:40:16.72 ID:si/cekt2d.net]
int func(void); と
int func(...); に対する言及なしで
int func(); だけ出てきてるからまともな議論じゃないと思ってスルーしてたが

可変引数は >>651 で出てきてそれに合わせてるだけじゃねーの?

673 名前:デフォルトの名無しさん (スップ Sd1f-asUV) [2022/06/13(月) 08:54:28 ID:si/cekt2d.net]
int func(void); だとそもそも引数なししか受け付けない。
int func(...); だと引数の型と個数を実装側が期待するものにしなければならない。間違えたら未定義動作。
int func(); だと引数の型がわからないまま関数を使う。間違えてたら未定義動作。

int func(...); の第1引数は普通は型を明示するから
int func(const char*, ...); のようになるが。

674 名前:はちみつ餃子 mailto:sage [2022/06/13(月) 09:33:56.73 ID:zy+KupId0.net]
>>661
いいえ。 一致しない引数で関数を呼出そうとすることが未定義です。

675 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 10:21:00.47 ID:BOW2YZM80.net]
>>664
一致しないって何と何が?
funcについて仮引数は宣言されていない
よって実引数との型の比較行われず
一致にも不一致にもあたらないぞ

676 名前:はちみつ餃子 mailto:sage [2022/06/13(月) 10:32:48.37 ID:zy+KupId0.net]
>>665
いいえ。 どこかに関数定義は存在し、関数定義 (の仮引数) とその関数呼出し (の実引数)
との矛盾 (引数の数があわない・型が適合しない) は許されていません。

677 名前:デフォルトの名無しさん [2022/06/13(月) 11:04:47.60 ID:YiPaBYDZr.net]
可変長引数では無理なのね
>>650の(2)の実装だとどうなるの

678 名前:はちみつ餃子 mailto:sage [2022/06/13(月) 11:30:06.51 ID:zy+KupId0.net]
マクロでコンパウンドリテラルを作ってから (その個数と共に) 渡すという方法が取れると思う。
受け取る関数の型は >>645 の通りではできないけど。

#include <stdio.h>
#define foo(...) bar(sizeof((char[]){0, __VA_ARGS__}), (char[]){0, __VA_ARGS__})

void bar(int n, char* args) {
if(n==1) {
printf("no argment.\n");
} else {
printf("argment is %c.\n", args[1]);
}
}

int main(void) {
foo('a');
foo();
}



679 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 11:35:06.46 ID:BOW2YZM80.net]
>>666
話が噛み合っていないな
引数の数も型も比べる相手がいないのに矛盾しようがない
そもそも関数原型を用意しましょうなんていうのはCにおいて後付けの推奨事項に過ぎない
既存のコードを否定するのは影響が大きすぎるからな

680 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 11:47:54.04 ID:ir4nxYTVd.net]
>>661
自分で「可変引数にするときは」と言っておいて
なにが「そんな用語はない」だよ
頭おかしい

681 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 11:48:35.71 ID:cwJzo4Jp0.net]
fn(void)
fn(int)

こういう2種類の引数を許容したとして
呼ばれた側はどう区別したら良いんだろう
コンパイル時に、別関数にアサインしたらいいのかな
その場合は受け取る関数も二つ用意してやらないと行けないな

682 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 11:52:40.59 ID:ir4nxYTVd.net]
区別はできない
引数を見ようとしたら結果は不定になる
単なるバグだよ

683 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 12:04:59.49 ID:63W4P7Hh0.net]
(2)の想定はこれだった
https://wandbox.org/permlink/EidRL6a8uqiszn2m
これも引数0個のときは##__VA_ARGS__か__VA_OPT__が必要で
まずかったな

684 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 12:13:41.38 ID:Bgq8kBxf0.net]
>>669 関数定義とその呼び出しを比較するって書かれてるのに、きみが無視するから噛み合わないんだよ。

685 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 12:16:16.46 ID:BOW2YZM80.net]
>>674
void func() { } /* 定義 */
int main()
{
func(); /* 呼び出し */
}
どこが矛盾なんだ?

# 迂闊な答えをすると罠があるから気をつけな

686 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 12:18:15.22 ID:BOW2YZM80.net]
>>670
その時点ではアバウトな言葉遣いが容認される流れだったが
厳密さを求める流れにあんたが変えたんだよ

687 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 12:27:06.91 ID:Bgq8kBxf0.net]
>>675 その例だけなら矛盾しないね。でも引数渡せないから>645のやりたかったことはできないよね。

688 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 15:54:04.85 ID:BOW2YZM80.net]
>>677
引数が空のときにに意味を持たせるんだったな
void func() { puts("no arguments are given"); }
int main()
{
func();
}

# さっき言った「罠」がまだここにある



689 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 16:19:19.10 ID:Bgq8kBxf0.net]
まともに話す気なさそうだし、もういいや。

C言語では>>645に書かれてるようなことはできなくて、
>>654の「第一引数は不定」はどうせ未定義動作の間違い、
という点に異論が無ければ、これ以上語ることもない。

690 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 16:34:27.02 ID:cwJzo4Jp0.net]
nantoka()と呼び出した場合、
呼び出された関数は、
nanntoka(char adress)として
スタック上からadressを取り出そうとするが
ここにある値はNULLではなく、不定値(所謂ゴミ)
NULL判定で回避はできない

691 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 16:37:54.51 ID:ir4nxYTVd.net]
>>678

Once again, once again, you're on your own
Who's to blame? who's to blame? it's such a shame
No-one ever hears your name, or plays your game

692 名前:デフォルトの名無しさん [2022/06/13(月) 18:45:35.75 ID:+5MOS3Faa.net]
>>680
> スタック上からadressを取り出そうとするが
だからそれを実行するかどうかもわからんって話
未定義動作ってそういうもんだ

693 名前:デフォルトの名無しさん [2022/06/13(月) 18:53:43.72 ID:HsopZ7m+d.net]
グローバル変数 int exists_adress; を介してやれば引数あり/なし のモードを未定義動作を回避しつつ設定できそう
実用性など皆無だが

694 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:17:35.58 ID:ir4nxYTVd.net]
>>682
読み出すまではできるだろ
戻りアドレスか関係ないレジスタの退避値が入っている
問題はここではエラーにならず次にこの値で何かしようとしたらクラッシュする可能性が高い
これは単にコンパイラを騙して原因がわかりにくいエラーを出す方法なだけ
全くなんの意味もない

695 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:21:03.88 ID:cwJzo4Jp0.net]
分からないなら、試して見れば良いのに

696 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:40:41.59 ID:+5MOS3Faa.net]
>>684
だからコンパイラは読み出すコードを吐く義務はない
未定義動作とわかった時点で呼び出しすらしないコードを吐く可能性もある
未定義動作ってそういうもんだ

697 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:46:28.66 ID:cwJzo4Jp0.net]
読み出さなければ、実行時エラーにならないだろう
なんで、なるの?

698 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:48:48.04 ID:cwJzo4Jp0.net]
呼ばれた側の関数は、adressに入っている(はずの)値を使うんだぜ
コード吐かなければ、それこそコンパイラのバグになるぞ



699 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:52:23.50 ID:cwJzo4Jp0.net]
実際に呼び出すコードは、呼ばれた側の関数に実装されるが、
呼び出し側の引数セットありと、引数セット無しで、
違うコードが実行されたりするのか?

700 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:03:29.40 ID:Q7R38T3J0.net]
何が起こっても不思議ではない未定義派と、コンパイラ実装は実質こうなってる派で話が噛み合うはずがないと思うの。

701 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:05:01.34 ID:cwJzo4Jp0.net]
信仰と言うより、勘違いだろう
恥ずかしくて後に引けなくなった感じ

702 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:09:56.04 ID:cwJzo4Jp0.net]
引数セットするのは、呼び出し側
コンパイラが呼び出し側で引数がないと判定した結果、
気を利かせて呼び出さないコードを吐くって一体どういうことだろう

呼ばれた側は機械的にあるはずの引数にアクセスする
呼ばれる側はセットしてないなんて分からないからアクセスしてしまうぞ

703 名前:デフォルトの名無しさん [2022/06/13(月) 20:10:29.53 ID:8KDu5nutr.net]
>「罠」がある(キリッ
とかお寒いこと書いちゃうくらいだしよほど視野が狭くなってたんだろうなぁ

704 名前:デフォルトの名無しさん [2022/06/13(月) 20:15:33.10 ID:iGSNe98na.net]
stdcall と cdecl の話か?
どっちにしても引数省略されたのかされてないのか呼ばれた方では判らん
C++なら省略の代わりにデフォルト引数入れたりマングリングしたり出来るが
Cではどうしようもない

705 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:17:50.97 ID:6K7aQgyCM.net]
>>693
コピペで使えそうだなw

706 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 21:42:41.32 ID:PLcvpN2h0.net]
>>688-689,691-692
コンパイルエラーとして全くコードを吐かないという事すら可能なのに何を言ってるんだよ...
今時未定義動作すら考慮して最適化したりしてる時代なんだぞw
https://qiita.com/kaityo256/items/d2677e178be0180482e8

707 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 21:44:17.84 ID:ir4nxYTVd.net]
>>686
何か勘違いしてないか
コンパイラが未定義動作とわかったらエラーか最低でもワーニングを出す
コンパイラにはわからないからバグになるんだよ

708 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 22:00:44.23 ID:cwJzo4Jp0.net]
ワーニング笑



709 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 22:05:19.85 ID:cwJzo4Jp0.net]
一体どこのコンパイラがコード吐かずに停止するんだよ

710 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 22:14:04.47 ID:PLcvpN2h0.net]
>>697
> コンパイラが未定義動作とわかったらエラーか最低でもワーニングを出す
そんな義務はない
> コンパイラにはわからないからバグになるんだよ
同一翻訳単位ならわかるだろ
勘違いしてるのは君、と言うか君の知識が浅すぎるだけ

>>699
存在するかどうかは関係なく規格上はそう言う処理系でも規格準拠という話






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<258KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef