- 1 名前:デフォルトの名無しさん (ワッチョイ 0f63-sFbk) mailto:sage [2023/04/21(金) 14:05:20.18 ID:rqj2HSDF0.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 C23 最新ドラフト https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.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言語なら俺に聞け 160 https://mevius.5ch.net/test/read.cgi/tech/1672191630/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
- 254 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx) mailto:sage [2023/06/26(月) 13:00:03.75 ID:DZPgqn/v0.net]
- >>249
main に引数が有るか無いかの話じゃなくて、無いときに void を書くという話題だよ。
- 255 名前:デフォルトの名無しさん (ササクッテロラ Sp81-9QlF) mailto:sage [2023/06/26(月) 13:16:56.95 ID:6bPwUIFfp.net]
- 実際の組み込み系には、二つのmainエントリーがある
引数のある奴と、無い奴な
- 256 名前:デフォルトの名無しさん (ワッチョイ 856e-gmRT) mailto:sage [2023/06/26(月) 13:20:15.17 ID:TXNTP2LF0.net]
- >>254
組み込みでargcとargvはどんな意味があるってんだ? コンソールがあるって前提?
- 257 名前:デフォルトの名無しさん (ササクッテロラ Sp81-9QlF) mailto:sage [2023/06/26(月) 13:24:00.16 ID:6bPwUIFfp.net]
- 意味なんて知るか
ブートローダとか色々都合があるんだよ
- 258 名前:デフォルトの名無しさん (ワッチョイ 9dc9-3ptY) mailto:sage [2023/06/26(月) 13:31:08.91 ID:yiohjGaX0.net]
- 環境依存しまくってる部分だとは思うけど
組み込み用のコンパイラでも エントリは main のままなのね
- 259 名前:デフォルトの名無しさん (ササクッテロラ Sp81-9QlF) mailto:sage [2023/06/26(月) 13:43:40.71 ID:6bPwUIFfp.net]
- 組込みの真のエントリーはresetな
でも普通はそこからmainまではハード会社が提供してる 初期化処理が入るからあんまり触らない
- 260 名前:デフォルトの名無しさん (スッププ Sdab-W+UZ) mailto:sage [2023/06/26(月) 16:47:50.70 ID:D5GxB3wJd.net]
- リンカにわたすオプションで_startだか_resetだかを指定してるだけ(例えばld -e _start)
自分で初期化を書きたければmakefileに先頭ラベルを記述すればいい
- 261 名前:デフォルトの名無しさん (ラクッペペ MM4b-d+Ca) mailto:sage [2023/06/26(月) 17:33:04.45 ID:O3f/yVVZM.net]
- 割込みベクタテーブルのリセット割込みのアドレスがエントリポイント
マイコンのリセットでプログラムカウンタのアドレスが設定される
- 262 名前:デフォルトの名無しさん (ササクッテロラ Sp81-9QlF) mailto:sage [2023/06/26(月) 20:20:34.26 ID:6bPwUIFfp.net]
- >>260
石によるだろそんなん
- 263 名前:デフォルトの名無しさん (ワッチョイ 856e-gmRT) mailto:sage [2023/06/26(月) 20:39:52.87 ID:TXNTP2LF0.net]
- K&R Cで「死産だった」とされるentryというキーワードは、多分このへんの話だったんだろうな
- 264 名前:デフォルトの名無しさん (スプッッ Sd03-eK8M) [2023/06/26(月) 20:56:23.88 ID:aG57g/0Md.net]
- そもそもCPU(マイコン)と、そのCPUの命令セットに翻訳するコンパイラに自由度を与えるためにC言語規格で明言することを少なめにしてる
0x100からカウンタが始まるだのブートローダーが必要だの環境依存の初期化はコンパイラが知ってれば十分。
- 265 名前:デフォルトの名無しさん (ササクッテロラ Sp81-9QlF) mailto:sage [2023/06/26(月) 21:02:50.78 ID:6bPwUIFfp.net]
- コンパイラは知らないよ
スタートアップライブラリが知ってる
- 266 名前:デフォルトの名無しさん (ワッチョイ 856e-gmRT) mailto:sage [2023/06/26(月) 21:10:49.81 ID:TXNTP2LF0.net]
- そそ
- 267 名前:デフォルトの名無しさん (ワッチョイ e3fb-eK8M) [2023/06/26(月) 21:26:51.56 ID:L7dTsKCZ0.net]
- ああそうかコンパイラ自体は初期化手段知らなくてもいいのね
- 268 名前:デフォルトの名無しさん (ワッチョイ bb2d-ctHD) mailto:sage [2023/07/07(金) 14:46:28.07 ID:Cp8NbwGm0.net]
- #include <stdio.h>
void stack_size_estimate() { int dummy; // スタック上に確保するダミー変数 // スタック上のポインタとダミー変数の差を計算 unsigned long stack_size = (unsigned long)&dummy - (unsigned long)&stack_size_estimate; printf("Estimated stack size: %lu bytes\n", stack_size); } int main() { stack_size_estimate(); return 0; } Windowsで実行すると毎回結果がばらばらになる
- 269 名前:デフォルトの名無しさん (ワッチョイ e26a-3VO7) mailto:sage [2023/07/07(金) 14:52:43.24 ID:RkflWXNN0.net]
- .textと.bssを比較すりゃさもありなん
- 270 名前:デフォルトの名無しさん (ササクッテロラ Sp5f-SBEo) mailto:sage [2023/07/07(金) 15:00:57.31 ID:Rpkmzd56p.net]
- プログラムとデータは別れてんだよなぁ
- 271 名前:デフォルトの名無しさん (テテンテンテン MM8e-OS6S) mailto:sage [2023/07/07(金) 16:12:54.67 ID:h0HZTRPQM.net]
- アドレス空間レイアウトのランダム化 (ASLR)だろ
差じゃなくてポインターの中身を表示してみればいいじゃん
- 272 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP) mailto:sage [2023/07/07(金) 16:20:17.47 ID:gGTaLgTI0.net]
- >>267
64bit 版の Windows だとしたら unsigned long はポインタを表すのに十分なサイズではない。 上位バイトが丸ごと抜け落ちて意図した計算が出来てないと思う。 へんなところを引き算するよりベースアドレスを基準に観察したほうがわかりやすいよ。 歴史的事情で Windows ではインスタンスハンドルがベースアドレスそのものということになってる。
- 273 名前:デフォルトの名無しさん (スップ Sd22-PY2F) [2023/07/07(金) 16:42:49.80 ID:LOYSagRvd.net]
- そういやlongはWindows環境だと32bitだっけか
size_t使ったほうが面倒がなさそう
- 274 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP) mailto:sage [2023/07/07(金) 16:53:06.75 ID:gGTaLgTI0.net]
- Windows だとどっちでもいいけど意味の上では uintptr_t のほうが妥当だと思う。
- 275 名前:デフォルトの名無しさん (ワッチョイ 0e79-p0MK) mailto:sage [2023/07/07(金) 16:55:15.60 ID:tybFBPle0.net]
- いやもう露骨にbit数書いてくれた方がいいわ
int128とか
- 276 名前:デフォルトの名無しさん (ワッチョイ bb2d-ctHD) [2023/07/07(金) 17:07:14.08 ID:Cp8NbwGm0.net]
- #include <stdio.h>
#include <Windows.h> void stack_size_estimate() { int dummy; // スタック上に確保するダミー変数 SIZE_T stack_size; // ダミー変数のアドレスを取得 LPVOID dummy_addr = &dummy; // メモリ領域の情報を取得 MEMORY_BASIC_INFORMATION mbi; VirtualQuery(dummy_addr, &mbi, sizeof(mbi)); // スタックサイズを計算 stack_size = (SIZE_T)dummy_addr - (SIZE_T)mbi.AllocationBase; printf("Estimated stack size: %lu bytes\n", stack_size); } int main() { stack_size_estimate(); return 0; } 2096444 bytes になります、予想の5分の1くらいでした
- 277 名前:デフォルトの名無しさん (ワッチョイ c67c-mdfO) mailto:sage [2023/07/07(金) 17:38:01.25 ID:GxNDHmP50.net]
- >>274
#include <stdint.h> の int64_tとかじゃあかんの?
- 278 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP) mailto:sage [2023/07/07(金) 17:44:32.91 ID:gGTaLgTI0.net]
- ここで欲しいのは「ポインタを格納するのに適した整数型」であって
具体的に何ビットなのかをプログラム上で表現するのは筋違いだと思うんだけど でもまあどうせ処理系に依存するなら抽象を挟んでもあまり得なことも無いかな とも思うし、まあそこらへんは感覚的なもんやからね……。
- 279 名前:デフォルトの名無しさん (ワッチョイ c67c-mdfO) mailto:sage [2023/07/07(金) 17:46:08.50 ID:GxNDHmP50.net]
- >>277
#include <stdint.h>の intptr_tやuintptr_tじゃあかんの?
- 280 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP) mailto:sage [2023/07/07(金) 17:49:07.83 ID:gGTaLgTI0.net]
- >>278
いいよ。 私は uintptr_t が妥当と述べてる。 (>>273)
- 281 名前:デフォルトの名無しさん (ワッチョイ c67c-mdfO) mailto:sage [2023/07/07(金) 17:55:31.01 ID:GxNDHmP50.net]
- Windowsならこうなってるね
LONG_PTR SetWindowLongPtrA( [in] HWND hWnd, [in] int nIndex, [in] LONG_PTR dwNewLong );
- 282 名前:デフォルトの名無しさん (ラクッペペ MM8f-VHD8) mailto:sage [2023/07/08(土) 09:25:06.78 ID:ZG00xBJMM.net]
- それハンドルを取得する関数なのでポインタとはちょっと違う
- 283 名前:デフォルトの名無しさん (スプープ Sd3f-4U7T) mailto:sage [2023/07/08(土) 11:55:06.89 ID:pEcLN/B5d.net]
- >>275
それで本当にスタックサイズ計算できてるの? MSの文書だとデフォルトでは1MBと書いてあるし もし不足が予想されるのならリンクオプションでサイズ変更できるし 本来大きいメモリはalloc系で確保すべき
- 284 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg) mailto:sage [2023/07/08(土) 12:43:32.13 ID:svQTfB7/0.net]
- メモリ空間は 64bit あるけどその全てに実メモリが割り当てられているわけでは当然ない。
仮想的なメモリを管理するから API の名前に Virtual とついてて、 AllocationBase は管理している一塊の単位のベースってだけ。 その単位の中の全てがスタック用とは限らないので基準にはならないと思う。 各スレッドのスタックの底は thread information block に格納されているはず。
- 285 名前:デフォルトの名無しさん (ワッチョイ ff7c-DxV6) mailto:sage [2023/07/08(土) 19:02:15.63 ID:wtJKE3gc0.net]
- >>281
????
- 286 名前:蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdbf-yJMt) mailto:sage [2023/07/08(土) 19:05:04.15 ID:E2jAOZHYd.net]
- >>281
違うよ。ポインタと同じサイズの整数値を設定できる関数だよん。 型キャストすればポインタも渡せる。
- 287 名前:デフォルトの名無しさん (スップ Sd3f-hfg2) mailto:sage [2023/07/09(日) 12:33:23.59 ID:6bAebKnHd.net]
- 井の中の蛙だったか
あーくだらん
- 288 名前:デフォルトの名無しさん (ワッチョイ 17b3-S1Rn) mailto:sage [2023/07/09(日) 18:21:47.85 ID:nGZbLr+D0.net]
- #include <stdio.h>
void main(void) { int card[5][5]; int *p; p = card; } gccでコンパイルすると aa.c:7:11: warning: assignment to ‘int *’ from incompatible pointer type ‘int (*)[5]’ [-Wincompatible-pointer-types] 7 | p = card; となります。 エラーではないので動くのですが・・・この警告はどうすれば消えますか? やりたいことは、2次元で宣言してる変数cardを2次元を意識することなくアクセスしたくて*pに代入しています。
- 289 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg) mailto:sage [2023/07/09(日) 18:24:43.97 ID:6ZzBc/+b0.net]
- >>287
p = *card;
- 290 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg) mailto:sage [2023/07/09(日) 18:31:02.01 ID:6ZzBc/+b0.net]
- >>287
この場合に card の型は int[5][5] なんだけど 配列は配列の先頭要素を指すポインタに暗黙に型変換されるのが基本ルール だから式中に card が出てきたら int(*)[5] として扱われる。 この型は int* と互換性のない型ということを警告は言ってる。 型が int(*)[5] であるような式に * を付けたら int[5] ということになるんだけど 上述の暗黙の型変換のルールで int* ということになって p の型と一致するようになる。 故に p = *card; で通る。
- 291 名前:デフォルトの名無しさん (ワッチョイ 17b3-6GCC) [2023/07/09(日) 18:37:18.48 ID:nGZbLr+D0.net]
- サンクス
- 292 名前:デフォルトの名無しさん (ワッチョイ 9ffb-9JJG) [2023/07/09(日) 18:49:34.69 ID:vTvbeyL00.net]
- この場合ってpを長さ25の1次元配列として使っていいという保証あるっけ?
`card[0]`の長さ5の配列と`card[1]`の長さ5の配列に隙間がないことが保証されてればいいんだけど
- 293 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg) mailto:sage [2023/07/09(日) 19:43:00.43 ID:6ZzBc/+b0.net]
- >>291
二次元配列ってのは理屈の上では一次元配列を要素とする配列と解釈される。 一次元配列で要素間に詰め物が入らないなら二次元でも理屈は同じ。
- 294 名前:デフォルトの名無しさん (ワッチョイ ff7c-DxV6) mailto:sage [2023/07/09(日) 20:21:15.21 ID:DZU7rHSU0.net]
- アフォはこう書く
p = (int*)card; 先輩方に見捨てられるので気をつけて
- 295 名前:デフォルトの名無しさん (スプープ Sd3f-4U7T) mailto:sage [2023/07/09(日) 20:52:22.88 ID:QgBW0FA9d.net]
- >>291
心配なら int card[5*5]; とでも宣言すれば安心だけど パディングがもしあるなら card[5];の各要素の間にすでに挟まってるはずなので card[5][5];も同じようにアクセスできるはず
- 296 名前:デフォルトの名無しさん (ワッチョイ 175f-kkOg) mailto:sage [2023/07/09(日) 23:01:01.58 ID:uNLQZN7w0.net]
- >>291-292
隙間の有無とアクセス保証は関係ないでしょ。少なくとも規格上は。
- 297 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg) mailto:sage [2023/07/10(月) 00:28:02.91 ID:EhhseXmK0.net]
- 規格上の規定は要素のレイアウトの規定として私は理解してたので
そのレイアウトと矛盾しなければ一次元の配列として 扱っても仕様に反しないという解釈でいたんだが……。 直接的に書かれている演算方法を経由した場合しか許さん と捉えたなら保証はないのかもしれない。
- 298 名前:デフォルトの名無しさん (ワッチョイ ff63-kkOg) mailto:sage [2023/07/10(月) 00:33:20.12 ID:SSHQru750.net]
- 保証がないと、困るよ・・
- 299 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg) mailto:sage [2023/07/10(月) 00:36:21.43 ID:EhhseXmK0.net]
- 解釈の余地があるときは安全側 (制約が厳しい側) で解釈しておくのが筋ではある。
- 300 名前:デフォルトの名無しさん (ワッチョイ ff63-kkOg) mailto:sage [2023/07/10(月) 00:53:08.94 ID:SSHQru750.net]
- 元々配列なんて一次元が基本だし、mallocで確保して多次元配列として扱うなんてのもよくあるし
- 301 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg) mailto:sage [2023/07/10(月) 01:20:39.58 ID:EhhseXmK0.net]
- >>299
malloc で確保した領域はどんなオブジェクト (少なくとも仕様の範囲内で作れる型に対応するオブジェクト) に対しても適切に境界調整されている。 そこらへんは別の話。
- 302 名前:デフォルトの名無しさん (スプープ Sd3f-4U7T) mailto:sage [2023/07/10(月) 08:43:48.54 ID:Xrxae+evd.net]
- 先頭と領域が確保されていればその間にアクセスできない部分があることはないだろう
そんな器用なことをする必然性がないわ
- 303 名前:デフォルトの名無しさん (アウアウウー Sa9b-8N3f) mailto:sage [2023/07/10(月) 08:47:35.15 ID:7JEyTvQka.net]
- #include <stdio.h>
void main(void) { int card[5][5]; int **p1; int *p2 p1 = card; p2 = card[0]; }
- 304 名前:デフォルトの名無しさん (ワッチョイ ff7c-DxV6) mailto:sage [2023/07/10(月) 09:02:15.74 ID:BD2ve/J+0.net]
- >>302
こっちでやれ https://mevius.5ch.net/test/read.cgi/tech/1427572389/
- 305 名前:デフォルトの名無しさん (アウアウウー Sa9b-8N3f) mailto:sage [2023/07/10(月) 09:24:10.89 ID:dS/bwvgRa.net]
- >>303
おまえそっちでやれ ○○のはずとかそんなんで書くぐらいなら普通に書け
- 306 名前:デフォルトの名無しさん (ワッチョイ ff7c-DxV6) mailto:sage [2023/07/10(月) 09:29:04.81 ID:BD2ve/J+0.net]
- >>304
何のことだよ?
- 307 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f73e-kkOg) mailto:sage [2023/07/10(月) 09:53:48.86 ID:EhhseXmK0.net]
- >>301
オブジェクトのレイアウトについての話じゃなくてポインタ演算に制約がある。 ポインタの演算の結果は配列の要素か配列の最後の要素を ひとつ過ぎた位置を指さなければならない。 その位置にアクセスする (単項演算子 * を適用する) かどうかに関係なく ポインタの演算の結果がその条件を満たさない場所を指すときは未定義となる。 (C99 なら 6.5.6 の加減演算子の項目に書いてある。) 今回の場合は *card が返すのは二次元配列の「最初の行」を指すポインタなので このポインタを元に演算した結果が最初の行の外を指してしまったらダメと解釈できる。 仕様に書かれている演算はその演算に相当するレイアウトで配置される という意味で解釈することも出来ると私は考えていたが 仕様の文面に厳密に言えば駄目かもわからん。 現代的な処理系ではポインタは由来 (provenance) という概念を持っていて 演算の元になったオブジェクトを外れたら未定義であるということを 利用して最適化することもある。 これは実際にある話で、必然性を言うならそれで速くなる可能性があるという理由がある。 仕様に厳密にしないとわけのわからないことが起こるのが C というものなので 仕様の解釈は大事だよ。
- 308 名前:デフォルトの名無しさん (ワッチョイ 9fad-kkOg) [2023/07/10(月) 10:31:52.15 ID:ifz8cUKw0.net]
- >>302
p1 = card; の所はコンパイルエラーが出て欲しいところだが、Cだと警告だけ出して先に進んじゃうかな。
- 309 名前:デフォルトの名無しさん (ワッチョイ ff7c-DxV6) mailto:sage [2023/07/10(月) 10:34:39.51 ID:BD2ve/J+0.net]
- int card[5][5]; となっているとき
&card 二次元配列全体へのポインタ card 最初の行へのポインタ *card 最初の要素へのポインタ
- 310 名前:デフォルトの名無しさん (ワッチョイ bf79-CBkq) mailto:sage [2023/07/10(月) 12:23:15.05 ID:pvSg+WfU0.net]
- 2次元配列なんてExcelのRangeオブジェクトが返す配列ぐらいでしかお世話になったことないわ
特に効率的でもないし構造体でええやろ
- 311 名前:デフォルトの名無しさん (スップ Sd3f-hfg2) mailto:sage [2023/07/10(月) 12:47:58.91 ID:Wg7MEfSed.net]
- 何でそこで構造体?
- 312 名前:デフォルトの名無しさん (ワッチョイ 175f-kkOg) mailto:sage [2023/07/10(月) 12:53:57.17 ID:AzWw4sMa0.net]
- >>308 下2行は正しくない。
- 313 名前:デフォルトの名無しさん (スップ Sd3f-hfg2) mailto:sage [2023/07/10(月) 13:25:18.46 ID:Wg7MEfSed.net]
- §6.3.2.1の段落2で定める例外にあたらない場合という但し書きが足りないね
悪かったよ
- 314 名前:デフォルトの名無しさん (ワッチョイ ff63-/79E) [2023/07/10(月) 18:04:08.51 ID:SSHQru750.net]
- 5ch、専用ブラウザがサポート終了し、撤退する様です。
FireFoxだと書き込める様です。 それ以外のブラウザも多分大丈夫なんでしょうが、試してはいません。
- 315 名前:デフォルトの名無しさん (ワッチョイ ff7c-rqKn) [2023/07/10(月) 18:05:43.31 ID:BD2ve/J+0.net]
- ソースplz
- 316 名前:デフォルトの名無しさん (スップ Sd3f-9JJG) [2023/07/10(月) 18:24:57.71 ID:EIZKDTevd.net]
- 処理系が16byte境界に合うように
「card[0][4]とcard[1][0]の間にパディングを入れる」ってのが起こりうるか不安 わざわざコンパイラがそんなことする理由は 1. 16byte境界の合わせたほうがindexの計算が速い 2. card[0][5]へのアクセスを不正とみなして、ここへの書き込みを検知するフラグを入れる 規格上パディングが入らないことが保証されるならこの話は忘れてくれ
- 317 名前:デフォルトの名無しさん (ワッチョイ ff63-/79E) [2023/07/10(月) 18:29:02.59 ID:SSHQru750.net]
- Talk専用ブラウザ 「Jane Style」 ← 5chの記述が消えました
20230710 Version 5.00 公開 ・Talk に対応しました * 5ch.net のサポートを終了しました janesoft.net/janestyle/
- 318 名前:デフォルトの名無しさん (アウアウウー Sa9b-HEX/) [2023/07/10(月) 18:54:15.08 ID:ebofKpc7a.net]
- >int **p1;
無いわωωω
- 319 名前:デフォルトの名無しさん (ワッチョイ 9fad-OD6X) mailto:sage [2023/07/11(火) 02:24:43.39 ID:vn98dBP10.net]
- >>314
https://agree.5ch.net/test/read.cgi/operate/9240230711/ 正確にはJaneStyleが離反した > 00015ちゃんねる ★2023/07/11(火) 00:00:00.00ID:LokiTech > Janestyleはもう5ch.netと提携していません。 > Janestyle以外の専用ブラウザをご利用ください。 > 旧バージョンの5chブラウザ(API前)は近く再度利用可能となります。 > (以下略)
- 320 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3732-/79E) mailto:sage [2023/07/11(火) 11:41:03.76 ID:MoKwTryZ0.net]
- >>315
おそらく連続 (contiguously) というのは間に余計なものが入ることはないという意味で書いてると思う。
- 321 名前:デフォルトの名無しさん (ワッチョイ b702-VAl4) mailto:sage [2023/07/11(火) 12:37:10.33 ID:UJem4sQV0.net]
- テスト
> どういう理屈か知らんけど > chmateで『URLから開く』で見たい板のURL貼り付けして > 「5ch」の部分を「5Ch」に変えて開くと > 5chのスレchmateで見れて草 https://twitter.com/motokamin_/status/1678473238177783835 (deleted an unsolicited ad)
- 322 名前:デフォルトの名無しさん (ワッチョイ e2ad-/jfo) [2023/07/17(月) 05:23:15.01 ID:0PvTd+Ok0.net]
- chmate はもう対応できてないかな。俺は読み書きできるようになったよ。
今これはPCからで Siki っていうの使って書いてるが。
- 323 名前:デフォルトの名無しさん (ワッチョイ 163e-MI76) mailto:sage [2023/07/17(月) 09:16:25.38 ID:YifLUjyU0.net]
- 旧 API を復活させて制限が緩くなったから昔の専ブラがそのままかちょっとした設定変更で使えるよ。
今のところ PC 用の専ブラとしては JaneXeno か Siki が決定版だと思われているようだ。
- 324 名前:デフォルトの名無しさん (ワッチョイ 3279-EJzg) mailto:sage [2023/07/17(月) 11:31:18.04 ID:SG+RSRxx0.net]
- >>321
PCはAPI対応前の昔のlive2ch(live5ch)が使える
- 325 名前:デフォルトの名無しさん (ワッチョイ 4d46-am1z) [2023/07/17(月) 11:33:54.45 ID:o8kBjP6A0.net]
- ninja は make を完全に置き換え可能になったでござるかニンニン?
- 326 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 163e-MI76) mailto:sage [2023/07/17(月) 11:48:18.17 ID:YifLUjyU0.net]
- >>324
設計思想が異なる。 ninja は make ほど多機能ではなく、メタビルドツール (cmake など) と組み合わせるのを前提としている。 どうせメタビルドツールは使うという前提なら ninja のほうが使い勝手が良いと思うが、 そうでないなら make のほうが楽だと思う。
- 327 名前:デフォルトの名無しさん (ワッチョイ dfad-onGn) [2023/07/22(土) 17:50:40.48 ID:ZqN2VkQO0.net]
- Siki はおすすめ記事が出ていた。
5chブラウザー、JaneStyle代わりのオススメは「Siki」 https://news.yahoo.co.jp/articles/adfd44b291fbc07686ea4735e1397a3287aa4045
- 328 名前:デフォルトの名無しさん (ワッチョイ 7f63-cTWz) mailto:sage [2023/07/27(木) 01:32:04.41 ID:z625zk2O0.net]
- 現状専用ブラウザJaneStyle4.23を落としてきて修正パッチを当てて動かしてます。
修正パッチは有志が機械語レベルまで降りて解析し対処してます。 今まで無かった機能まで追加してます。その技術力はスゴイですね。 ただ、専用ブラウザは今後5ちゃんねるの仕様が変わったときに 開発者がメンテできるかどうかで生死が決まりそうですね。
- 329 名前:デフォルトの名無しさん (ワッチョイ 7310-X/lp) mailto:sage [2023/08/02(水) 10:02:23.97 ID:6slkiMgF0.net]
- なんか昔「コンパイル言語は消滅してスクリプト言語が主流になる!!」って主張聞いて
オープンソースアプリはともかく商業アプリでスクリプト言語使ってたら 速攻解析されてコピーなりクラックされて(その結果どうなるかはわからんけど)商売にならないんじゃないのかと思ったけど 現状どうなのかな? JaneStyleの 不具合発生→ねらー修正 っての見てるとバイナリーコードでもスクリプトコードでも解析難易度は変わらないのかなとも思うけど。
- 330 名前:デフォルトの名無しさん (ワッチョイ 1746-ZTxv) [2023/08/02(水) 10:53:42.75 ID:19FN81hV0.net]
- >>328
事実如何を措いて、 主流以外の傍流は消滅するという理屈がそもそもおかしい。
- 331 名前:デフォルトの名無しさん (ラクッペペ MMe6-Fuds) mailto:sage [2023/08/02(水) 11:00:33.97 ID:Vv20iihFM.net]
- バイナリクラックなら開発言語そのものにはあまり意味はない気がするけどな
バイナリエディタで稼働中の実行コード覗かれれば元の言語が何であろうが同じこと
- 332 名前:デフォルトの名無しさん (ワッチョイ be63-1j9t) mailto:sage [2023/08/02(水) 11:10:57.90 ID:STym7Vrv0.net]
- こういうのはやはりファームやってた人は強いのだろうか?笑
- 333 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b73e-yh3V) mailto:sage [2023/08/02(水) 11:11:56.50 ID:Vhf3uqZN0.net]
- 暗号化やら難読化やらを駆使しても
実行中には実行できる形になってるのは どうしようもないもんな。 だからライセンスで制約を付けるんだが、 不特定多数をユーザーとするビジネスモデルだと 制約を守らせるのも難しいのだと思う。
- 334 名前:デフォルトの名無しさん (ワッチョイ be63-1j9t) mailto:sage [2023/08/02(水) 11:38:35.24 ID:STym7Vrv0.net]
- 不具合を何度も指摘されても放置していて
痺れ切らしたユーザーが解析してパッチを公開した これが最初だったと思う
- 335 名前:デフォルトの名無しさん (ワッチョイ 4af0-0TAO) mailto:sage [2023/08/02(水) 11:45:48.58 ID:JKibevwe0.net]
- あれ難読化してあるの?
- 336 名前:デフォルトの名無しさん (ワッチョイ 6aad-kNqZ) mailto:sage [2023/08/02(水) 11:54:41.63 ID:na1pjdup0.net]
- 業務用アプリならサブスクとクラウドって感じだろうけど
個人向けのだとどうなんだろうね まあそういう海賊版はアップロードした奴を捕まえることで対処しているっぽいけど アプリの制限取っ払われるのはもうどうしようもないんじゃないかな
- 337 名前:デフォルトの名無しさん (ワッチョイ 6aad-kNqZ) mailto:sage [2023/08/02(水) 11:55:36.50 ID:na1pjdup0.net]
- 難読化はしてない
いやらしいほどに丸見え
- 338 名前:デフォルトの名無しさん (スッププ Sdb6-FXAW) mailto:sage [2023/08/02(水) 20:21:52.90 ID:Zi22N3SKd.net]
- >>328
オープンソースを勘違いしてる?
- 339 名前:デフォルトの名無しさん (ワッチョイ be63-1j9t) mailto:sage [2023/08/02(水) 20:58:10.27 ID:STym7Vrv0.net]
- 質問型式ではなく、自分はこう考えていると書いて
- 340 名前:デフォルトの名無しさん (スッププ Sdb6-FXAW) mailto:sage [2023/08/02(水) 23:54:36.96 ID:W7+oBwzNd.net]
- >>328
次元の違う問題を比較してると思う スクリプトでコンパイル言語を代替できるようになったとしても 商業ソフトを供給するほうがスクリプトでないと実装できないことにはならないし サーバーサイドで重要な処理を行うようにすればスクリプトでもそこは解析できないわけだし(今回の5chのAPI仕様変更みたいに)
- 341 名前:デフォルトの名無しさん (ワッチョイ 6aad-Z/b2) [2023/08/03(木) 04:03:41.71 ID:/xW45k0z0.net]
- >>328
主流かどうかはわからんけどJavaのような仮想マシンで動くやつは流行ったな(Androidスマホで採用されたので思い切り流行った)。Perlとかのインタープリタの言語も内部でコンパイルしてから動くのでなんとなく似ている。 こういう風に仮想マシンで動くようにするとOSやCPUが違っても互換性を保つのが楽になる。
- 342 名前:デフォルトの名無しさん (ワッチョイ 5b2d-IPSQ) mailto:sage [2023/08/03(木) 17:16:30.77 ID:5KUHoXNc0.net]
- tiktokなんかjavascriptでVMを実装してその上で独自のコードが動いてるせいで解析が極めて困難になってる
- 343 名前:デフォルトの名無しさん (ワッチョイ 1746-ZTxv) [2023/08/04(金) 08:54:17.97 ID:4oDPVLgw0.net]
- >>341
こわっ...
- 344 名前:デフォルトの名無しさん (スフッ Sd8a-KN61) [2023/08/04(金) 15:45:40.86 ID:GMHK0FTid.net]
- /* 文字列を反転させる */
#include <stdio.h> #include <string.h> void reverse(char *); void reverse(char *cp) { char *p, *q, wk; p = cp; q = &cp[strlen(cp)]-1; // strlen()は'\0'を数えないのに1引かないと正しく動作しない while (p < q) { wk = *p;*p = *q;*q = wk; p++; q--; } } int main(void) { char ss[] = "Program123456789"; reverse(ss); printf("%s\n", ss); return 0; } 上記プログラムでstrlenは'\0'文字をカウントしないのに、1引かないと正しく動作しないのはなぜですか?
- 345 名前:デフォルトの名無しさん (スフッ Sd8a-KN61) [2023/08/04(金) 15:49:34.67 ID:GMHK0FTid.net]
- 343の訂正です
q = &cp[strlen(cp)-1]です
- 346 名前:デフォルトの名無しさん (ワッチョイ 17c9-NYH+) mailto:sage [2023/08/04(金) 15:57:00.72 ID:/AVxr1FX0.net]
- 末尾の \0 を入れ替えたらあかんやろ
"AB" は strlen() == 2 になって 0 1 2 [A][B][\0] こういう配置や
- 347 名前:デフォルトの名無しさん (ワッチョイ 17c9-NYH+) mailto:sage [2023/08/04(金) 16:03:23.77 ID:/AVxr1FX0.net]
- strlen は文字数を返す一方で [ ] の中はオフセット量(0スタートの相対距離)だから
1文字目を指すのは オフセット0 の場所なんだわ
- 348 名前:デフォルトの名無しさん (スフッ Sd8a-rFCo) [2023/08/04(金) 16:09:46.38 ID:GMHK0FTid.net]
- >>>345 >>>346 即答ありがとうございます
自分はまったく そこまで考えてstlrenを使ってませんでした。ありがとうございます。勉強になります
- 349 名前:デフォルトの名無しさん (ワッチョイ 17c9-NYH+) mailto:sage [2023/08/04(金) 16:25:43.11 ID:/AVxr1FX0.net]
- そこまで考えてというか ポインタ/配列添え字 が 0 から始まるだけの話でな
1文字目 = (オフセット)0 2文字目 = (オフセット)1 : n文字目 = (オフセット)n-1 他所言語(特に古めのBASIC) だと配列の添え字は 1から始まるのが自然だから その感覚のままだと およよ? ってなる
- 350 名前:デフォルトの名無しさん (ワッチョイ be63-1j9t) mailto:sage [2023/08/04(金) 16:33:03.37 ID:h8ImZ1qQ0.net]
- COBOL, PL/I, RPG, FORTRAN, BASIC, R, Lua, Julia は、1で始まる
- 351 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b73e-yh3V) mailto:sage [2023/08/04(金) 16:45:56.55 ID:vdf3rEq10.net]
- BASIC はバリエーションが多いよ。
0 と 1 を切り替える機能があるやつを知ってる。
- 352 名前:デフォルトの名無しさん (ブーイモ MMe6-rA3N) mailto:sage [2023/08/04(金) 22:18:35.44 ID:3UzK9dfoM.net]
- >>341
そのやり方だとapple審査通らないのでは?
- 353 名前:デフォルトの名無しさん (ブーイモ MMe6-rA3N) mailto:sage [2023/08/04(金) 22:23:16.57 ID:3UzK9dfoM.net]
- 環境はwebkitでvm自体dlしてくるから問題ないということなのか…
- 354 名前:デフォルトの名無しさん (ワッチョイ e3ad-c/5M) [2023/08/05(土) 14:06:37.50 ID:7Tp3cevL0.net]
- >>349
Pascal もよろしく
|

|