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
408 名前:宴Cブラリバージョンの差異でエラーとなるのを防ぐための テクニックです 各自が自分の開発環境に合わせて #define LIBRARY_VERSION 1などと 定義する必要があります [] [ここ壊れてます]
409 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 06:50:38.08 ID:0hAphrOld.net] いえ、それはそのライブラリの作者(メンテナンスしてる人)が標準ヘッダ内で定義すべき内容です ユーザーは>>397 を自分のファイル内で使用してバージョンの差異を吸収できます
410 名前:デフォルトの名無しさん [2022/03/26(土) 01:22:16.42 ID:EYuSPLit0.net] >>398 ,400,401 説明のための例のようですね、失礼しました あと、この定数が未定義の場合の値は0になるのですね そのあたりを理解していませんでした どうもありがとうございました
411 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 16:05:05.08 ID:EYuSPLit0.net] コンパイル(リンク)時に、同じプロジェクト内の別ソースの関数などを呼び出せるのはなぜ? インクルードして教えてる訳でもないのに、もしかして全ソースを探しに行ってるんですか?
412 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 17:27:18.26 ID:T/pJeR6z0.net] 全ソースから探し出すのがリンク includeとかで関数宣言だけは見えるようにする必要はあるが。 main.c ----------- char* func(int size); int main(){ char* p=func(16); } ----------- funcという名前の関数は、 前方宣言(1行目)してるのでリンク時に探しに行く。 リンク時の解決用に定義した関数(とその実装)を.objファイルに一覧としてまとめる。 リンクという作業では、.objと.libと.dllから"func"という名前の関数を探し出す。 見つからなかったり2つ以上見つかったらリンクエラーになる。 古いCだと前方宣言がなければ int func(); 決め打ちで前方宣言扱いしたりする。
413 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 18:26:49.41 ID:kmPIEuI7d.net] >>403 (古典的な)Cではアセンブラソースに変換してアセンブル→リンクされるが 通常の関数名や変数名はアセンブラのグローバルシンボルに変換され リンク時に他のアセンブラソースから参照できるようになる 一方関数内のローカル変数やstatic宣言された関数や変数はローカルシンボルとして扱われ他のアセンブラソースからは参照できなくなる
414 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:45:36.64 ID:EYuSPLit0.net] よく分かりました、ありがとうございました
415 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 21:02:14.58 ID:angONFKk0.net] グローバル変数の修飾子の意味は次の意味で合っているでしょうか? 修飾子なし:変数の実体を定義 extern修飾子:定義済みの変数を参照する static修飾子:変数の実体を定義して、その変数を他のファイルからexternさせない
416 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 11:08:20.21 ID:c4HYTfCO0.net] 適当にググって見つかったexternとstaticの解説 ttps://daeudaeu.com/extern/ ttps://daeudaeu.com/static/
417 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 00:24:04.59 ID:c+1KPnOj0.net] >>408 そのサイト含めいろいろ見て、それをまとめたのが>>407 です 念のためどなたかに確認していただこうかと思って書き込みました
418 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 06:11:36.84 ID:7UUvIzLId.net] そんなに信用されてもw
419 名前:デフォルトの名無しさん [2022/03/29(火) 08:18:01.14 ID:C0VnxRTv0.net] 自分で色々なパターンでコンパイルして確認しないのかな?って思う。
420 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 08:55:46.71 ID:tKmNrPY6d.net] 正確な意味を知るには解説サイト見て回るより規格書見るほうがいい real-c.info/indexDesc.html
421 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 13:03:41.11 ID:M0Gs9C4cM.net] llvm-14 の、ソースツリーの外にcmake ディレクトリができる下品な感じ、なんとかならないの?
422 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:17:04.78 ID:X58TTE+20.net] >>413 cloneしたディレクトリの直下にbuildディレクトリ作ってそこでcmake 〜 ../llvmじゃいかんの? 今どきソースのディレクトリで直接ビルドしないのは下品というより上品ではないですか
423 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 18:15:06.70 ID:U1DxU1KgM.net] >>414 >ソースツリーの外に 下品
424 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 18:20:46.45 ID:1zZAboUWM.net] ソースツリーの中にbuildフォルダ作るのは上品なん?
425 名前:はちみつ餃子 mailto:sage [2022/03/29(火) 18:47:55.98 ID:4oPH291+0.net] autotools でも out-of-tree build は出来るようにするのが一般的な作法。 あらゆるプロジェクトでそうしているというほどではないと思うけど、ごく普通にある。
426 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 22:23:02.11 ID:X58TTE+20.net] https://llvm.org/docs/CMake.html を見るとソースフォルダの外でビルドしなきゃいけないような感じに書いてあるけど、 https://clang.llvm.org/get_started.html を見るとリポジトリ直下にbuild作ってそこでビルドすればいいように書いてあるから、llvmはお上品にビルドできるのですわ
427 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 12:18:00.47 ID:BXJ/mUbsM.net] llvm-14 まだゴミw 色んなものがダメになるw
428 名前:デフォルトの名無しさん (ワッチョイ 6fb3-7L1B) mailto:sage [2022/04/12(火) 19:31:59 ID:B1tFLWvv0.net] char buf[256]; memset(buf, NULL, sizeof(buf));・・・(1) memset(buf, 0, sizeof(buf));・・・(2) (1)と(2)同じ事をしていると思うのですが、どっちで記述するのがメジャーですか?
429 名前:蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd02-qTly) mailto:sage [2022/04/12(火) 19:35:46 ID:Dt0TGPDOd.net] NULLはポインタだから(2)が正しいよ。
430 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a23e-vtdv) mailto:sage [2022/04/12(火) 20:06:33 ID:5njWaFr40.net] >>420 言語仕様に厳密にいうと前者で初期化しようとした場合に buf が 0 で初期化されることは保証されないし、 コンパイルエラーになることもありうる。 整数定数式の 0 がポインタに変換したときに空ポインタになることは保証されるので NULL が単に #define NULL 0 として定義している環境もよくあるんだが、 仕様上の NULL は「処理系定義の空ポインタ定数に展開する」ということになっていて 整数の 0 を書ける文脈に NULL を書いて通るとは限らないんだ。 そんで「整数定数式の 0」がポインタに変換されたときに空ポインタになることは保証されるが、 定数式ではない文脈での整数の 0 は空ポインタになることは保証されていないし、 逆に空ポインタを整数に変換したときに 0 であるとも限らない。 if 文などの制御式としてポインタを置いても問題ないのは C の制御式は !=0 が補われたかのように動作するというルールのおかげ。
431 名前:デフォルトの名無しさん (ワッチョイ 6fb3-7L1B) mailto:sage [2022/04/12(火) 20:07:57 ID:B1tFLWvv0.net] >>421-422 お早いレスサンクス わかりました
432 名前:ハノン mailto:sage [2022/04/20(水) 22:16:48.28 ID:vxzn/db60.net] >>422 >整数の 0 を書ける文脈に NULL を書いて通るとは限らないんだ。 可変長引数にあるあるの最後に (char *)0 (なんで char * なんだ?)なんかがいい例ですね
433 名前:デフォルトの名無しさん (ワッチョイ 97b3-4qoo) mailto:sage [2022/04/22(金) 15:01:50 ID:YxI2bgUE0.net] (ソースtt.c) #include <stdio.h> #include <math.h> void main() { double d; int a; d = 1.234; a = round(d); printf("%d\n", a); } $gcc tt.c /tmp/cc0NPwg6.o: 関数 `main' 内: tt.c:(.text+0x23): `round' に対する定義されていない参照です collect2: error: ld returned 1 exit status こんな短いソースなのに解決できない。助けてー(´・ω・`) OSはLinuxです
434 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 15:04:48.71 ID:SxzvmxoM0.net] どうせリンクしてないとかそんなんだろ
435 名前:蟻人間 mailto:sage [2022/04/22(金) 15:05:51.08 ID:BJPJNuGwd.net] >>425 古いコンパイラにはroundがないかもしれない。
436 名前:蟻人間 mailto:sage [2022/04/22(金) 15:06:16.30 ID:BJPJNuGwd.net] -lm
437 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 15:12:16.74 ID:SxzvmxoM0.net] gccなら -lmで動的リンクする簡易オプションがある、プログラム内だけで完結したいならコンパイラ付属のmathライブラリのソースも含めてコンパイル
438 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 15:14:29.72 ID:SxzvmxoM0.net] 動的リンクだとmathは浮動小数点の扱いが実行環境に依存するので静的リンク推奨
439 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 15:26:22.00 ID:YxI2bgUE0.net] ありがとう gcc tt.c -lm でコンパイル通りました。
440 名前:デフォルトの名無しさん (スププ Sdbf-DCm/) mailto:sage [2022/04/22(金) 15:44:53 ID:I04xh82td.net] 割とよく使う標準ライブラリなのに一々リンク方法をユーザーに選択させるという事の意義を考えるように、おまじないじゃないぞ
441 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 17:13:59.15 ID:RFW8R+x+d.net] roundかtruncかfloorかはたまたceilかもしれないrintとその一味のヤバいやつら こんなもんさっさと追放しろよ
442 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 17:31:11.41 ID:SxzvmxoM0.net] 整数型で表せない整数をdoubleで表したい時も稀にある どうせ前後の整数(±1)は表せない不連続すきっ歯領域だし、どう丸まろうが影響無い部分だよ、って意図の明示に
443 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 17:49:02.83 ID:SxzvmxoM0.net] 用途は思い浮かばないでもないが、適切に使われてないケースが多分99%
444 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 13:45:19.22 ID:+Gd9xYyP0.net] 表せないときは整数型多倍長処理作る
445 名前:デフォルトの名無しさん [2022/04/24(日) 11:54:23.21 ID:S9c+iUdl0.net] GMPでそ C++じゃないとちょっと使いにくいけど
446 名前:デフォルトの名無しさん (ワッチョイ 51e6-DWDP) mailto:sage [2022/04/24(日) 15:18:10 ID:Qwrn6LYl0.net] >>437 激しく同意 https://mevius.5ch.net/test/read.cgi/tech/1434079972/84
447 名前:デフォルトの名無しさん (スフッ Sd94-6n8/) mailto:sage [2022/04/25(月) 03:24:41 ID:LAuA6+3Dd.net] 多倍長整数とか言ってる人は意図汲めてなくね? 正確性も表現力も不要だけど、それでも整数に相当する巨大数が要るのは極を利用した求根アルゴリズム(方程式解法)とかでしょうよ たとえば、求めたい関数fの根がその逆数関数1/fの極と等しい事を利用するとか もしdoubleの範囲を多倍長整数/任意桁数演算で308桁を陽に扱必要があるけど、そもそも極判定は指数部のみで行えるわけで、各桁の数字を陽に保持する意味が無い 一方で指数が巨大なdoubleを生で足すのは悪手 丸めれば各々の積分経路での評価値は真値から一旦遠ざかるけど、一貫した丸めを行う限りは10000万回も足せば互いに相殺されて均される
448 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 03:38:21.89 ID:LAuA6+3Dd.net] ちょっと拵えすぎたような設定だったかもしれないけど、300桁を陽に保持して、ハードウェアの恩恵も無しに一万回加算とか、向かないどころかあまりにも非現実的過ぎる例もある という例程度に あとdouble使ってればinfが返ってくる可能性があるのが最大の利点 もしinfを引き当てられれば、それを与正入力がその浮動小数点実装における最高精度の解だと理論的に保証される
449 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 03:44:18.07 ID:LAuA6+3Dd.net] 訂正と補足 それを与正→与えた入力 (1/f)(x)→inf と f(x) → 0 と fの根はそのx は論理的に同値
450 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 05:05:51.34 ID:ueJIdSJ50.net] INF見付かれば恣意的に収束/発散閾値を調整しなくてエレガントだよな 俺は素性の事前に分かってて留数定理使えるような関数くらいしか扱わないから、気にせずそのまま足しちゃうわ 積分経路は(楽だから)正方形に取り、均等に4分割して極のある範囲を再帰的に絞り込んでる、下手にニアミスしたりするとかえって桁落ちしたりして整数倍からズレる ±0.1くらいなら、きっと極を囲めてるものと想定 Cで数値計算入門みたいな本で勉強してるけど、浮動小数点の特殊値とかエラーの扱いとかの記述が一切抜け落ちてて困る
451 名前:デフォルトの名無しさん (スフッ Sd70-6n8/) mailto:sage [2022/04/25(月) 19:15:48 ID:o7ajKrF0d.net] 実質ハードの実装に収束(発散)判定任せて綺麗に見えてるだけだがな しかし比較無しに符号、複素数なら東西南北まで得られるのは便利
452 名前:デフォルトの名無しさん (ワッチョイ 73b3-jUKb) mailto:sage [2022/05/09(月) 06:57:39 ID:Egg1/KgR0.net] 20年くらい前、Windows98が使われてた頃なんですが char s = ''; // ←シングルクォーテーション2個 っという書き方が許されてた記憶があるんですが、記憶違いかな? 今Linux上のgccでコレをコンパイルすると「error: empty character constant」になる
453 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 07:35:16.71 ID:QnLN+NJ0a.net] あえてなのかバグなのかは知らんけど20年前のコンパイラがそういう記法を通してたってだけだろ
454 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 08:27:27.53 ID:Egg1/KgR0.net] >>445 冷静に考えてみたらコンパイラもOSも違うからそういうことだな
455 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 10:42:17.80 ID:qGH53jdv0.net] ''で何が代入されるの?
456 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 11:12:38.36 ID:DLFHVgdp0.net] '\0' や 0 と同等の動作なんかねぇ
457 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 11:15:27.95 ID:DuxsXAR8M.net] 普通に考えれば空文字だと思う
458 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 11:35:54.50 ID:lTlzTKNA0.net] NULL 「何もないよー」な意味をあらわす単語 空文字 長さ0文字の文字列のこと この解釈でOK?
459 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 11:37:44.15 ID:DLFHVgdp0.net] 文字と文字列は違う 今話題に上がってるのは文字のほう
460 名前:デフォルトの名無しさん (ラクッペペ MMe6-PUK/) mailto:sage [2022/05/09(月) 12:02:23 ID:ItS/vT2KM.net] 長さ0文字の文字列なら""(ダブルコーテーション)では?
461 名前:デフォルトの名無しさん (アウアウウー Sa1f-KEdX) mailto:sage [2022/05/09(月) 14:03:39 ID:KBCMvYUWa.net] >>448 まあそれが一番ありがちかと
462 名前:はちみつ餃子 mailto:sage [2022/05/09(月) 17:13:19.74 ID:9vSL2/iz0.net] >>444 言語仕様にはそれを通す規定は見つからないな。 少なくとも一文字は必要であることになってる。 C89 ではすでにそうなってるし、後の仕様でも変更はない。 出来る処理系があったのだとしたらあくまで処理系の拡張。 「たとえば 'ab' などのように二文字以上を含む場合は処理系定義」という意味の規定はあるので 雑に任意個の文字を受け付けるようにしたらうっかり 0 個も通してしまったとか、 意図的ではない挙動 (コンパイラのバグ) だった可能性もあるし。
463 名前:デフォルトの名無しさん [2022/05/09(月) 17:32:30.12 ID:x5IK3MV30.net] 立方根を自作関数で求める方法教えてください、、、、、
464 名前:はちみつ餃子 mailto:sage [2022/05/09(月) 17:46:08.50 ID:9vSL2/iz0.net] >>455 要件次第だけど実装が一番簡単なのは log を使うことだと思う。
465 名前:デフォルトの名無しさん [2022/05/09(月) 17:47:02.53 ID:x5IK3MV30.net] >>456 ニュートン法を使いたいです、、
466 名前:はちみつ餃子 mailto:sage [2022/05/09(月) 17:50:27.78 ID:9vSL2/iz0.net] >>457 方法がわかってるなら何をききたいの?
467 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 18:03:26.90 ID:jsi1f5HY0.net] 何も入っていない変数が作れます
468 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 18:36:55.77 ID:4JqWZIdB0.net] だからその > 何も入っていない は0から0xffのうちの何なのよ。 1 Byteの領域はあるんでそ。
469 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 18:39:59.52 ID:jsi1f5HY0.net] そこは未知の領域
470 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 19:59:08.45 ID:UxqgrJa1a.net] >>460 ネタに全力で食いつくなよw
471 名前:デフォルトの名無しさん (ワッチョイ ea02-zDU0) mailto:sage [2022/05/09(月) 20:46:46 ID:poYUryAv0.net] 一番簡単なのは挟み撃ちだと思うけどな 1の三乗は 0.5の三乗は と1/2づつ狭めていく
472 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 09:30:11.65 ID:79aB+w7Md.net] >>450 NULLはポインターに代入できる「無意味な位置」を表すアドレス
473 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2a3e-PvPk) mailto:sage [2022/05/10(火) 11:28:15 ID:dIEMLhL70.net] だいぶんボケたことを書いてしまった。 (>>456 ) 式変形をする必要すらなく pow ひとつで良かった。 double cube_root(double x) { return pow(x, 1.0/3); }
474 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 19:36:27.76 ID:gxi5OEx30.net] それを自作関数で求めるとは言わんやろ
475 名前:デフォルトの名無しさん (ワッチョイ 6aad-zDU0) [2022/05/10(火) 23:29:45 ID:CQsKbFR90.net] 言うだろう
476 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 06:53:21.08 ID:zyEQjrH3d.net] コンビニ弁当買ってきて料理したというレベル
477 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 10:08:25.28 ID:jCepvp6u0.net] 通はコンパイラの自作から始める?
478 名前:デフォルトの名無しさん (ブーイモ MMd6-RieT) mailto:sage [2022/05/11(水) 10:35:21 ID:a8uVrD+/M.net] 情報学科ならCPU設計からだよ
479 名前:デフォルトの名無しさん (ラクッペペ MMe6-PUK/) mailto:sage [2022/05/11(水) 10:39:55 ID:3yHJq16kM.net] CPU設計だと情報学科なのか電子工学科なのか微妙なところ
480 名前:デフォルトの名無しさん (ワッチョイ be63-PvPk) mailto:sage [2022/05/11(水) 10:43:04 ID:jCepvp6u0.net] CPU設計ソフトを作る事から
481 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 12:00:05.99 ID:2wozbOYLd.net] 普通は自作関数作りたいんですって言ったら >>463 みたいなアルゴリズムを求めてるだろ 何の用途かは知らんが
482 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 12:53:38.63 ID:rJ/SGv8Sa.net] >>471 素子の物理設計からなら電子工学 アーキテクチャからなら情報工学 じゃね? まあ素子の物理設計なんてやってる学校があるかどうかは知らんけど
483 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 12:57:11.03 ID:3n2UFvlUM.net] CPU設計の半導体物性や加工技術は情報学科の範疇外だと思う
484 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 21:22:30.22 ID:Uorg83Yar.net] >>455 もう解決したってことでいいよね
485 名前:デフォルトの名無しさん (ワッチョイ 7e02-jKFb) mailto:sage [2022/05/11(水) 23:25:04 ID:eEErnLrt0.net] >>457 精度を組み込み関数より高めたいのかな? なら一回で十分だよ、ループする必要も収束を確かめる必要もなくて、 y-=fx / f'x だけで数桁精度が上がる
486 名前:デフォルトの名無しさん [2022/05/12(木) 00:07:01.33 ID:a2iZs8ls0.net] たぶんニュートン法を使いたいけどアルゴリズムを実装できないだけだと思うな
487 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 00:13:44.54 ID:rHUhttMxr.net] 反論がないし解決したってことで
488 名前:デフォルトの名無しさん (ワッチョイ 1746-OCox) mailto:sage [2022/05/12(木) 03:09:36 ID:DwGZHhAI0.net] simulink coderが便利すぎて手打ちする気にならない件
489 名前:デフォルトの名無しさん [2022/05/14(土) 10:01:08.50 ID:JFqjXnq80.net] >>444 許されていないよ char *ss = “”; char ch = ‘a’; の記憶違いでしょう
490 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 10:23:10.43 ID:yelWKEO3d.net] char ch = NULL; という書き方ならよく見かけた これはもちろん間違いなのだが
491 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 15:45:11.14 ID:fRXCxvkXd.net] >>444 これどうなったの [] [ここ壊れてます]
493 名前:デフォルトの名無しさん [2022/05/15(日) 13:21:26.16 ID:evMzyiSb0.net] '' が使えるかどうかはコンパイラ次第なのでは? 文法的にダメだろうがなんだろうが使えるようにコンパイラ作られたらそれまでだし。 そういやGCCにも void * の変数に ++ とかの計算が出来たりして衝撃を受けたことがあったなあ。 他のコンパイラでコンパイルしてエラーになって発覚。
494 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:31:38.71 ID:+H3bKj0ad.net] キャスト式に代入とかね
495 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:39:44.18 ID:tGTiPFBf0.net] void *型のインクリって一体何バイト進むんだ?
496 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:48:28.89 ID:+dMN0zqr0.net] >void *型のインクリって一体何バイト進むんだ? codepad のC言語 → 1バイト codepad のC++ → エラー ISO C++ forbids incrementing a pointer of type 'void*' compilation terminated due to -Wfatal-errors.
497 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:53:41.23 ID:evMzyiSb0.net] >>486 1だったよ。char * と同じように計算していた。 お近くの gcc でお試しください。
498 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 14:00:59.60 ID:tGTiPFBf0.net] 即レスサンキュー
499 名前:はちみつ餃子 mailto:sage [2022/05/15(日) 14:07:27.97 ID:PUHmRytO0.net] gcc だと sizeof(void) が 1 を返したりするんだよな。 C++ だとこれがエラーになることを SFINAE のトリックに使ったりすることもあるんで、 どうやって辻褄を合わせているのかよくわからん。
500 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 14:17:30.76 ID:KxReCtrr0.net] こういう質問が来るたびに自分で試せばいいのにって思う。 仕様がどうなってるのかという質問なら理解できるけど。
501 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 20:01:48.66 ID:YQrK3HARa.net] いや、マニュアル読めよ... https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Pointer-Arith.html
502 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 11:31:17.17 ID:HihepIbQd.net] 単に好奇心で聞いてるだけだと思うよ 実用的に使おうと言うんじゃなく というか関数ポインタも1バイトになるのかw
503 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 11:43:19.86 ID:VUKzLr9a0.net] 何か有用な使い道ってあるか?
504 名前:デフォルトの名無しさん (ワッチョイ eb69-wjZZ) mailto:sage [2022/05/17(火) 17:06:43 ID:FuWQL0zJ0.net] 汎用ポインタとして void * で受けておいて char * でキャストすることなく そのポインタを 1バイト単位で操作できたとしても *で実体を取得する瞬間にキャスト必須になるし どうなんだろ
505 名前:デフォルトの名無しさん (スップ Sd03-m0tN) mailto:sage [2022/05/17(火) 18:02:18 ID:HihepIbQd.net] ただのうっかりミスだと思うんだが 修正するとコンパイルできなくなるんで仕様にしてしまったのか
506 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 18:51:17.67 ID:Qbd65aeba.net] >>493 > というか関数ポインタも1バイトになるのかw んなわけないだろw 関数ポインタは普通に4/8バイトだよ 関数のサイズが1バイトになる codepad.org/zwItkWg3
507 名前:デフォルトの名無しさん (ワッチョイ 5b63-yvGd) mailto:sage [2022/05/17(火) 19:17:06 ID:kg0MHFY+0.net] バグからさめると別のバグの世界のような気がする。
508 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 20:20:31.65 ID:HihepIbQd.net] >>497 君以外はみんなわかってる気がするw