22/12/22 11:43:33.39 kpFE4WK60.net
アプリ(強制)終了後に使ったファイル削除→このファイルは使用中です。
OSで保証されてないならアプリ側でやるしか無いじゃん。
943:デフォルトの名無しさん
22/12/22 13:27:28.75 LbsYIb+eM.net
誰かがこのPCを使っている
944:デフォルトの名無しさん
22/12/22 13:35:11.18 KHPfY9lXd.net
LANなら充分にあり得ることだな
945:デフォルトの名無しさん (ワッチョイ 9710-Hnc0)
22/12/22 19:42:13.17 /Ar1RYH70.net
プロセス終了に関しちゃ今時のOSでハンドル握りっぱなしにはならんでしょ
946:デフォルトの名無しさん
22/12/22 20:28:13.17 Q5govio9d.net
/* 文字列を逆順にして返す関数 */
#include <stdio.h>
#include <string.h>
void reverse(char *ss);
int main(void)
{
char tt[]= "programing game";
947: reverse(tt); printf("tt=%s\n",tt); return 0; } void reverse(char *ss) { int wk,pos1=0,pos2; pos2=strlen(ss)-1; while (pos1<pos2) { wk=*(ss+pos1) *(ss+pos1)=*(ss+pos2); *(ss+pos2)=wk; ++pos1; --pos2; } } このプログラム、gccだとコンパイル出来ますが、clangだと以下のエラーになります。なぜでしょうか? ~/CCR/UserFiles/sample26.c:22:3: error: invalid operands to binary expression ('int' and 'char *') *(ss+pos1)=*(ss+pos2); ^~~~~~~~~~ 1 error generated
948:はちみつ餃子
22/12/22 20:40:06.89 KT1tc7ko0.net
>>909
wk=*(ss+pos1) の後にセミコロンが抜けてる。
949:デフォルトの名無しさん
22/12/22 20:43:53.45 Q5govio9d.net
ありがとうございます。コピペミスでした。
950:はちみつ餃子
22/12/22 21:11:31.21 KT1tc7ko0.net
事例としては面白いよ。
セミコロンが抜けても一応は式の形式として成立するから
型が合わないというところがエラーとして報告されちゃうんだな。
951:デフォルトの名無しさん
22/12/22 22:10:59.69 dL3lthyL0.net
昔のコンパイラならエラーなしで通してだろうな
952:デフォルトの名無しさん
22/12/22 22:43:34.75 K5vPIqXq0.net
ナウいヤングな文字列の掛け算はサポート外なんだわ
strcatで頑張れ
953:デフォルトの名無しさん
22/12/22 23:40:21.52 bege0WAi0.net
昔のコンパイラだと=*が乗算代入だったんだけどな
954:デフォルトの名無しさん
22/12/23 08:27:13.83 msM3WKDD0.net
exit on free 論争か・・・ そういう論争があったというのは知っているが
どっちに帰着したのか知らない
955:デフォルトの名無しさん
22/12/23 08:52:05.54 FPNxo7old.net
RAIIでexitするやついたら匙投げる
956:デフォルトの名無しさん
22/12/24 17:52:35.28 aYmW2hx40.net
プロセス終了を検知してOSで良きに測って欲しいよね
957:デフォルトの名無しさん
22/12/24 20:25:27.94 xbH5VpiM0.net
>>917
膨大なリストなんかはいちいち解放しないで exit( ) でヒープごと解放する方が効率的なんて言う奴までいたんだよ...
958:デフォルトの名無しさん
22/12/24 21:34:16.33 aYmW2hx40.net
いっそプログラム開始時に、
ドーンとでっかくメモリ確保して
自前でチマチマ割り当てて、
終了時にドーンと解放で良い気もする
959:はちみつ餃子
22/12/25 00:15:12.94 8blj/qJt0.net
そういう戦略をとっている有名なプログラムもある。
確保したメモリが結局はプログラムの最後までほとんど使用されっぱなしだということがわかっているなら
ちまちま管理しなくても終了と同時に全部が回収されることをあてにしても総合的なメモリ使用量は変わらない
(むしろ free のコスト分だけ節約できる) という考えをすることはあって、
リンカの LLD や Mold がそういう戦略をとっていたはず。
http サーバの h2o はセッション単位でドカンとメモリの確保と解放をしてる。
つってもプログラム全体のメモリについて見通しが立てられるということと
実行環境の事情を把握してるからそういう戦略を取れるのであって、
普通は小さなモジュールに分割するし、モジュール単位でメモリ管理に矛盾がないように設計するので
結果的にチマチマした確保と解放になる。
そこそこの規模になるとプログラムを分割せずに把握するのは大変なので凡人は小さな単位で
確保と解放をするように設計するのはしょうがないよ。
960:デフォルトの名無しさん
22/12/25 07:20:21.70 vLPFsJBC0.net
>>921
> 結果的にチマチマした確保と解放になる。
解放が必要なものまで>>920みたいなことしちゃダメだろ
リンカーのシンボル表みたいなのは処理中は追加オンリーで処理終了後に解放することになるから一気に解放が有効なわ�
961:ッで
962:デフォルトの名無しさん
22/12/25 08:37:13.23 AjsJE3fQ0.net
つまりメモリプールでしょ。昔からある戦略だ
963:デフォルトの名無しさん
22/12/25 08:49:15.44 gsvPl1RZ0.net
DOS時代の拡張子COMアプリは起動時に空いてるコンベンショナルメモリ全部(PC98ならVRAMの前まで)COMアプリに割り当てられるんだっけ。
964:デフォルトの名無しさん
22/12/25 08:59:08.85 CcfMXDnS0.net
やればできるよ
EXEとの違いはリロケーションテーブルがないってだけ
コード次第で出来んことは無いィィィ
965:デフォルトの名無しさん
22/12/25 09:03:42.49 vLPFsJBC0.net
>>923
考え方は近いがもっと特化した手法
なのでシンボル表みたいなものにしか適用できない
966:デフォルトの名無しさん
22/12/25 10:31:57.80 NJW41kMTa.net
空いてるコンベンショナルメモリ全部というと大きなメモリが割り当てられるように聞こえるけどコンベンショナルメモリは640キロバイトしかないからな
逆に小細工しないと拡張メモリ(exeで使える大きなメモリ)が使えないと言った方が正しい
967:デフォルトの名無しさん
22/12/25 11:06:28.12 CcfMXDnS0.net
リアルモードの「拡張メモリ」ならCOMでもEXEでも同じことだぞ
プロテクトモード用の「EXE」はまた別物だ
バイモーダルEXEなんてのもあったね
968:デフォルトの名無しさん
22/12/25 13:44:18.05 pgi9BcgIM.net
ラージモデルのexe、拡張子をcomに書き換えても動くのは秘密です。
969:デフォルトの名無しさん
22/12/25 15:44:19.19 mgz0dfZnM.net
exeとcomってファイル先頭のエントリーアドレスの解釈が違ってなかったっけ?
拡張子だけ変更しても暴走したような気がする
970:デフォルトの名無しさん
22/12/25 16:11:57.52 zQEQkIp7H.net
>>924
自力でシステムコール(あるいは farmalloc()) と far ポインタを扱うんだったら出来る
971:デフォルトの名無しさん
22/12/25 16:49:45.05 FlWfyDt20.net
OSは、EXEかCOMかの判定をファイル先頭2バイトで行うので
拡張子は同名実行ファイルの優先度以外には影響ありません
972:デフォルトの名無しさん
22/12/25 18:17:37.99 4l2e8mxL0.net
何のOSの話なんだよ?
973:デフォルトの名無しさん
22/12/25 22:36:13.77 R9zYhJab0.net
>>933
MS-DOS
974:デフォルトの名無しさん (US 0Hd7-ij7E)
22/12/25 23:53:11.65 3pvnVlsWH.net
>>925
LSI-C試食版のコード64KB の制限はなんとかなりませんかね?
975:デフォルトの名無しさん (ワッチョイ b363-dxp0)
22/12/26 00:03:12.26 eX0Ff8H70.net
試食版のコードで生成する実行プログラムを、動かす環境もってるの?
976:デフォルトの名無しさん (US 0Hd7-ij7E)
22/12/26 01:36:38.31 xk9EZjkPH.net
>>936
URLリンク(takeda-toshiya.my.coocan.jp)
977:デフォルトの名無しさん
22/12/26 10:26:13.14 eX0Ff8H70.net
W32が動く環境があるなら、そこでネイティブに使えるコンパイラにした方が良くないかな?
試食版って事はそれを業務で使うわけではないんでしょ?
978:デフォルトの名無しさん
22/12/26 11:02:09.22 +xP92Jxa0.net
8086 の SBC とか使って趣味でなんか作ってるんじゃね
俺も会社でだけど 80186 ボードのために Visual C++ 1.52c をずっと持ってた
979:デフォルトの名無しさん
22/12/26 11:47:25.06 Gtnl1i7F0.net
C使用でも何も考えずにVC++無料版入れてるわ。
バージョンアップの度にプロジェクト作成項目に悩む・・・。
980:デフォルトの名無しさん
22/12/26 11:49:12.88 rbZigseYd.net
関数のポインタの配列を返す関数の宣言を教えてくさい
981:デフォルトの名無しさん
22/12/26 12:21:30.32 sWfTrmtka.net
残念だなのび太
C言語は配列を返せないんだ
982:デフォルトの名無しさん
22/12/26 12:24:01.49 XQluw9Ded.net
>>935
試食って書いてあるの見えない?
そういう類いには意図的に制限かけてあるんだよ
有料の正規バージョンを買ってねって意味
PS3のlinux封じとは訳が違う
怒る人のいないやり方なので
脱獄は誰も手伝ってくれないよ
983:デフォルトの名無しさん
22/12/26 12:48:43.97 gpJgKl24M.net
森公一郎さん、亡くなっているんだよな
984:デフォルトの名無しさん
22/12/26 12:49:38.27 6bMfB0bxa.net
>>942
返す関数は定義出来るだろ
確保した領域の生存が関数内のみかそうじゃないかで結果は変わるが
>>941
思ってるものを描いてみ?
985:デフォルトの名無しさん
22/12/26 12:54:26.08 VH0Lg5Zw0.net
まあ関数イテレータ的には使えるのか
int getNoTest1(int x, int y, int z){return x*100+y*10+z;}
int getNoTest2(int x, int y, int z){return x*200-y*20-z;}
int getNoTest3(int x, int y, int z){return x*1000-y*100+z;}
typedef int(*FuncType)(int, int, int);
FuncType *getFuncAddrArray(void){
static FuncType fa[3];
fa[0] = getNoTest1;
fa[1] = getNoTest2;
fa[2] = getNoTest3;
return fa;
}
int main(int argc, char *argv[]){
FuncType *funcAddr = getFuncAddrArray();
for (int i = 0; i < 3; ++i){
printf("%d\n", funcAddr[i](rand(), rand(), rand()));
}
return 0;
}
986:デフォルトの名無しさん
22/12/26 15:36:06.25 tmqxSKGS0.net
>>945
できねーよ
配列が第一級オブジェクトじゃない珍しい言語
987:デフォルトの名無しさん
22/12/26 16:49:38.00 URVWGre6d.net
void(*func(void)[2])(void);
できるとしたら、こうなるが
988:デフォルトの名無しさん
22/12/26 17:05:11.56 0DsOmzGV0.net
固定長配列を戻すなら struct を経由したくなるわ
989:デフォルトの名無しさん
22/12/26 17:05:36.17 F5Lcb5Ke0.net
const char *f() {return "関数のポインタの配列";}
990:デフォルトの名無しさん
22/12/26 17:32:34.93 eX0Ff8H70.net
一休さんは、やめよう
991:デフォルトの名無しさん
22/12/26 17:34:43.38 0DsOmzGV0.net
URLリンク(ideone.com)
strust ひっぺがして 戻り値が配列となる宣言だとおこられた
FUNC_PTR_T getFuncs(void)[3];
992:デフォルトの名無しさん
22/12/26 18:26:36.88 +xP92Jxa0.net
>>949
てか struct で包めば配列も返せるよね
993:デフォルトの名無しさん
22/12/26 18:41:08.47 sEpxtj4KM.net
関数へのポインタの配列の構造体?
994:デフォルトの名無しさん
22/12/27 00:19:48.06 8jh3A4jF0.net
>>944
近藤嘉雪 パーサ担当
森 公一郎 コードジェネレーター担当
近藤さんの本は20年くらい前本屋でよく見かけたな
995:デフォルトの名無しさん
22/12/27 01:28:35.56 1kPfWYrSM.net
配列も値型だったら一貫性が有っただろうな
でも、配列を丸ごとコピーするなんて普通しないから、利便性を優先したんだろう
それによって、ポインタと配列は似てるけど違いもあるみたいな、初学者泣かせな仕様が生まれてしまった
996:デフォルトの名無しさん
22/12/27 03:19:13.84 lusjSahA0.net
ベースアドレスが配列の初めの要素を指すCスタイルの配列には一貫性があるだろ、だから0-based indexを採用する蓋然性があるわけで
何らかのbookkeeping、サイズ、ストライドやランク情報等のメタデータをスカラで一緒に渡す明示的なもの、あるいはstructで包む、メンバに.flagを設けるのはdope arrayの再発明
一方、dope arrayをネイティブ採用する為には
ベースアドレス+0は配列要素ではなく、メタデータを指さねばならない
だから初めの配列要素はベースアドレス+1(いわゆる1-based index)であるべき、という蓋然性がある
最も邪悪な配列の設計はメタデータを持つにも関わらずC慣習にすり寄って来て0ベース採用のやつな、設計に何の一貫性も無い
アドレス計算はCスタイルの方がスッキリして好き、個人的にはだけど
997:デフォルトの名無しさん
22/12/27 03:42:16.62 lusjSahA0.net
array[0]がarrayの始めの要素を指す、という伝統を尊重しつつ整合的にメタデータを持たせる拡張をしたいなら、arrptr-1に持たせるって手もあるね
998:デフォルトの名無しさん
22/12/27 05:21:18.30 nX/ozHbV0.net
文字列はchar型の配列だし
文字列のコピーなんか、あらゆる言語で基本中の基本だ
999:デフォルトの名無しさん (ワッチョイ 9d10-dxp0)
22/12/27 08:19:53.31 yfz0bOFn0.net
処理コスト軽減の為に配列自体ではなく配列の先頭ポインタでやり取りしましょう。
1000:デフォルトの名無しさん
22/12/27 11:14:55.49 FjfQte1M0.net
配列が固定長なのは仕方がないと言うか、当然かなと思うが
文字列は、編集がもっと自在に出来た方がありがたかったな
1001:デフォルトの名無しさん
22/12/27 11:19:00.19 8jh3A4jF0.net
>>960
同じことだぞ
式の中では配列はポインタそのものだ
1002:デフォルトの名無しさん
22/12/27 11:32:56.50 pT1qhH4d0.net
sizeof演算子「いや俺区別してるし」
1003:デフォルトの名無しさん
22/12/27 11:34:00.98 2fUOYjFgd.net
&演算子: いい加減なこと言ってもらっちゃ困るな
1004:デフォルトの名無しさん
22/12/27 11:36:45.19 2fUOYjFgd.net
昔、こんなバカいたよ
printf("%d", sizeof "abc");
見ろ、文字列はポインタだ(キリッ
1005:デフォルトの名無しさん
22/12/27 11:49:59.77 8jh3A4jF0.net
式の中の配列と書いたのが読めないバカが多すぎる
1006:デフォルトの名無しさん (アウアウウー Sa2f-aXTt)
22/12/27 12:20:51.00 3AXDXHupa.net
式がどういう意味かわかった上で他人をバカ扱いしてる?
1007:デフォルトの名無しさん (ワッチョイ 9769-jXNG)
22/12/27 12:21:02.33 o7XCQITF0.net
965なんかもあくまで式だよ
int a[100];
int *b;
(sizeof a) + (sizeof b); ←これも式であり、式の中に配列もポインタも居る
a++ 非合法
b++ 合法
これも式
1008:デフォルトの名無しさん (US 0Hd7-ij7E)
22/12/27 17:43:59.96 x3eVxeWPH.net
あの~
誰か excel マクロで動く cc を作ってくれませんか?
うちの会社、cygwin 禁止なんです、cygwin インストーラですら実行できないんです、すごく弱っています
コンパイラが手元にないと私は無力……
1009:デフォルトの名無しさん
22/12/27 18:03:44.42 /tVTIbQ7a.net
VBA使えよ
安心しろお前は自分で思ってるほどCが得意じゃないから
1010:デフォルトの名無しさん
22/12/27 18:19:46.78 uvaA1liZd.net
visual studioの稟議を上げられない社畜?
1011:デフォルトの名無しさん
22/12/27 18:22:29.22 FjfQte1M0.net
C#のコンパイラなら、何もせずともWinのどっかにはいっているような気がした
1012:デフォルトの名無しさん
22/12/27 19:41:50.61 tBCD9SD30.net
>>971
仕事に関係のない VS なんて認可されませんよ、べつにソフトウェアの人じゃないんだから
>>970
コンパイラが手元にないと、どうもやる気がでなくって…
1013:デフォルトの名無しさん
22/12/27 19:42:45.86 tBCD9SD30.net
>>972
cs.exe なんて大っ嫌い
1014:デフォルトの名無しさん
22/12/27 20:26:44.18 pT1qhH4d0.net
>仕事に関係のない VS なんて認可されませんよ
>誰か excel マクロで動く cc を作ってくれませんか?
仮に誰か作ってもインストール認可されないんじゃないの?
そういう環境だと読み取ったけど
1015:デフォルトの名無しさん
22/12/27 20:30:03.68 NnGcg72Bd.net
>>973
勤務中にくだらねえことやってんじゃねえって上司に怒られるの?
1016:デフォルトの名無しさん
22/12/27 20:31:33.55 usWDFVvc0.net
まあ仕事に関係ないって自分で言っちゃってるからなぁ
1017:デフォルトの名無しさん
22/12/27 20:39:00.00 FjfQte1M0.net
じゃあ、無敵のシェルスクリプトだだだ・・・
1018:デフォルトの名無しさん
22/12/27 22:26:37.16 tBCD9SD30.net
>>975
>仮に誰か作ってもインストール認可されないんじゃないの?
>そういう環境だと読み取ったけど
マクロはインストール
1019:するものじゃないから自由に使えるんですよ、インストール権限の必要なソフトはインストールできないってだけでして >>976 そうはいっても、単一ディレクトリの全ファイルに対して、ファイル名の冒頭に連番を振るプログラムを 3 時間ほどでチョロっと書いて、業務に生かしているんですけどね いちいち手作業でファイル名を変えるとかやってらんないでしょ?自分のために自分で書く分くらいは許容してほしいよね
1020:デフォルトの名無しさん
22/12/27 22:29:39.01 tBCD9SD30.net
あと、巨大な csv ファイルを結合するプログラムも便利に使っていたんですけどね、大概の機械はデータを csv で吐いてくれますますからねえ
1021:デフォルトの名無しさん
22/12/27 22:31:04.10 usWDFVvc0.net
>>979
屁理屈なら上司に言って怒られてこい
なぜまともなソフトがインストール不可なのにお前の作ったソフトなら大丈夫と思うんだ
1022:デフォルトの名無しさん
22/12/27 22:35:10.73 usWDFVvc0.net
ファイル名の頭に連番打つとかPowerShellでもバッチでもVBAでもできるしそもそも打つ必要があるかどうかさえ怪しい
お前のやってることが本当にみんなにとっていいことなら業務効率化のためにコンパイラの申請を通すのは何も難しくない
拒否られてるところで気づけよマジで
職場に不和の種をまくんじゃねえ
1023:デフォルトの名無しさん
22/12/27 22:35:56.95 FjfQte1M0.net
こう言うわがままは却下されて当然ではないか
1024:デフォルトの名無しさん
22/12/27 22:43:18.14 tBCD9SD30.net
>>976
操作記録をいちいち記録されて、裏でこっそり査定に響く仕組みですよ、たぶん
ああ、こんなところでここまで書いちまったらもう私の給料は来年は半額になっちまいますねえ、当の昔に諦めてるけど
1025:デフォルトの名無しさん
22/12/27 22:58:37.89 VvvSD8wK0.net
>>982
power-shell はたぶん入っていないと思いますよ、あったら使うに決まってますもん
VBA はいちいち excel を起動してマクロを走らせて、ああ、もうめんどくさくって死にそう
実行ファイルワンクリックで、ピシッと全ファイルを改名したいだけですよ、そうすればさくさく錯綜するメールスレッドを管理できますからね
バッチファイルで改名?できるというのなら見せてくださいな?
>>981
業務効率改善のため自分のために自分で作り自分が使うだけのソフトと、多数の人が使う商用の売り物のソフトとを一緒にしないでくれる?
1026:デフォルトの名無しさん
22/12/27 23:03:13.50 VvvSD8wK0.net
>>983
そりゃ、業務そっちのけで得体の知れないプログラムを書いてばかり(星新一の短編にそんなのがありましたね…)だったら叱られますけど、ぱっぱと3時間で書いて後はノーメンテ、それで半年実用になっているんだから遊んでいるわけじゃないんですけど
1027:デフォルトの名無しさん
22/12/27 23:06:57.48 VvvSD8wK0.net
>>982
>業務効率化のためにコンパイラの申請を通すのは何も難しくない
難しいんですよ…
あらかじめ効用をきちんと提示しなければならないなんてめんどくさくってやってらんない、
作りたいソフトが具体的に念頭にあるわけではなく、将来的に使いたい可能性が発生する可能性があります、で稟議を通るわけがないでしょう?
1028:デフォルトの名無しさん
22/12/27 23:25:57.12 FjfQte1M0.net
マ板で相談してみたら?
ここは大分場違いになってきてる
1029:デフォルトの名無しさん
22/12/27 23:34:33.01 nX/ozHbV0.net
ブログにでも書けばいいのでは
1030:デフォルトの名無しさん
22/12/28 00:05:29.63 JeA8YDJe0.net
>>988
(職業)マじゃないただの一般人なので、マ板はたぶん板違い
>>989
ブログみたいな上等な場所に書くことではなく、便所のチラ裏で愚痴るに相応しい話題だと私
1031:は思いますけどね まあ、もうやめます
1032:デフォルトの名無しさん
22/12/28 01:06:31.58 PyoNDBFu0.net
別に職業プログラマでなくても良いんだよ
プログラム(ロジック)についての悩みならここで良いが
プルグラムを書こうとする人の悩みは、マ板の方が相応しい
1033:デフォルトの名無しさん (テテンテンテン MM97-t1KK)
22/12/28 03:37:42.61 +f6n+5TtM.net
> バッチファイルで改名?
これが出来なきゃ何のためにバッチファイルが存在してんだよw
バッチやシェルスクリプトは、ファイルのコピーやリネームとか、ファイル関連の処理が簡単に出来る事が最大のメリットだ
兎に角グクれば山ほど出てくる
1034:デフォルトの名無しさん
22/12/28 05:55:41.03 VGHawTJO0.net
C
1035:デフォルトの名無しさん
22/12/28 05:56:03.28 VGHawTJO0.net
言
1036:デフォルトの名無しさん
22/12/28 05:56:54.31 VGHawTJO0.net
語
1037:デフォルトの名無しさん
22/12/28 05:57:50.13 DPVYYyHtM.net
C
1038:デフォルトの名無しさん
22/12/28 05:58:53.46 DPVYYyHtM.net
+
1039:デフォルトの名無しさん
22/12/28 05:59:41.77 DPVYYyHtM.net
+
1040:デフォルトの名無しさん
22/12/28 06:00:17.27 DPVYYyHtM.net
言
1041:デフォルトの名無しさん
22/12/28 06:00:51.24 DPVYYyHtM.net
葉
1042:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 145日 6時間 28分 24秒
1043:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています