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