[過去ログ] C言語なら俺に聞け 162 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
253: (ワッチョイ eaad-snvD) 2023/12/08(金)20:41 ID:Bb4hYLfH0(2/2) AAS
>>252
それはつまり「身内じゃないから動かない」なわけで身内も信じちゃまずいにはならんわけよ
>>249ではちみつ先輩が言っているのは「許可されたものは動く」なわけで
管理者が許可したものは動くし許可しなければ動かない
たぶん「許可したプログラムが許可してないコードを実行したらどうすんの?」ってことだと思うけど
そんなプログラムを許可した時点で間違ってる
254: はちみつ餃子◆8X2XSCHEME (ワッチョイ 2a3e-By03) 2023/12/08(金)20:48 ID:B2zBKDAb0(6/6) AAS
???
私の理解だと >>247 は「機械語をその場で生成して即時実行するのって危なくないの?」という話だと思ってたんだけど違うの?
そういう理解だったから実行の許可を出す (メモリの実行可能属性を ON にする API を呼び出す) ことなく実行できない、
プログラマの意図しない実行は防がれるということを応えたつもりだったんだけど、運用の話なの???
「身内」ってのは「プログラムの中での機械語生成にミスったらめっちゃ暴走するやん?」という意味かと思ったけど
運用にかかわる人物という意味?
255: (ワッチョイ ea79-4utE) 2023/12/08(金)21:24 ID:8rS6bPls0(1) AAS
>>225
C++黎明期はC++トランスレーター付きのCを普通に使わされたもんだよ
256: (スップ Sdbf-MP5X) 2023/12/09(土)07:42 ID:Z2D8kHNzd(1) AAS
>>250
それなら自作のプログラムをコンパイルして実行できる環境がすでにまずいだろw
パソコンをゲーム機みたいにしたいのかい
読み書きできるメモリを実行可能属性にできるというだけで
書き込み不可能なシステムメモリに書き込めるようにできるわけではない
257: (ワッチョイ ff46-vhj2) 2023/12/09(土)08:06 ID:NnZXyC0n0(1) AAS
本日のWebは、
・帝乃三姉妹は案外、チョロい。 → 本誌で既読
・レッドブルー → 本誌で既読
・からかい上手の高木さん → ゲッサンで既読
どうにかしてよ、A立。たとえば響5巻無料Webでもとか。
そういえば、高木さんの人の将棋のやつ、マガポケでも終わったね。
258: (ワッチョイ 97cf-TEND) 2023/12/09(土)08:12 ID:zYR2UmFI0(1) AAS
いわゆるroot権限が必要な行為は実行出来ないね
でも、mprotectの説明によると
> 注意
Linux では、(カーネル vsyscall 領域以外の) 任意のプロセスアドレス空間において mprotect ()を呼び出すことが、常に許されている。
となってるから、Node.js(node)とかJITを行うプログラムがユーザー権限で動くのだろう
単に利便性の為だろう
259(3): (ワッチョイ 9f07-h0RM) 2023/12/12(火)20:44 ID:3wiw5swR0(1/3) AAS
staticグローバル変数を含んだ動的ライブラリーを動的リンクをする場合はグローバル変数が初期化されるのはmain実行前の認識です。
同じプロセス内で再度初期化したい場合は別途初期化の関数を用意してないと不可能でしょうか?
動的ロード(dlopen)を使用した場合はdlcloseして再度dlopenした場合は初期化されますか?
260: (ワッチョイ d701-Qbcu) 2023/12/12(火)21:01 ID:bMo3JLCK0(1/2) AAS
>>259
やってみれば?
261(1): (ワッチョイ 17f1-tASO) 2023/12/12(火)21:15 ID:6C/zc+S/0(1/2) AAS
明示的に初期化処理を書くのが吉
262(1): (ワッチョイ d701-Qbcu) 2023/12/12(火)21:58 ID:bMo3JLCK0(2/2) AAS
>>259
>動的ロード(dlopen)を使用した場合はdlcloseして再度dlopenした場合は初期化されますか?
Linuxの場合には初期化されたけど環境依存かも?
$ cat hoge.c hage.c
#include <stdio.h>
static int a = 100;
void increament_a () {++ a;}
void print_a () {printf ("%d\n", a);}
#include <dlfcn.h>
typedef void (*Func) ();
省22
263(1): (ワッチョイ 9f07-h0RM) 2023/12/12(火)22:04 ID:3wiw5swR0(2/3) AAS
>>261
ですよねぇ
数十万のレガシーコードで、リセットするにはプロセスのキルが前提なんだけど、移植対象のシステムはプロセスをキルできないので、なんとかリセットする方法はないかと…
264(1): (ワッチョイ 17f1-tASO) 2023/12/12(火)22:10 ID:6C/zc+S/0(2/2) AAS
初期値代入くらい書くだろ普通
処理系によっちゃ不定な値から始まったりするのを防ぐ為にさ
265: (ワッチョイ 9f07-h0RM) 2023/12/12(火)22:18 ID:3wiw5swR0(3/3) AAS
>>262
検証ありがとう
自分の環境でも試してみます
266: はちみつ餃子◆8X2XSCHEME (ワッチョイ 5705-ZkkM) 2023/12/12(火)22:18 ID:Kje9ktjN0(1/2) AAS
>>259
RTLD_NODELETE フラグで再初期化を止められる(というよりアンロードを妨げるのだけど)ので逆に言えば特に指定しなければ再初期化はされるのが通常動作という解釈でいいと思う。
>>263
わかってるだろうけどレガシーコードをそうやって延命させるとますますワヤになるでよ。
267(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 5705-ZkkM) 2023/12/12(火)22:39 ID:Kje9ktjN0(2/2) AAS
>>264
言語仕様的にはグローバル変数 (記憶域期間が static) が不定になったりはしないことになっている (初期化子がなければゼロで初期化する) のでまともな開発環境があるところではそんな心配はしないよ。
心配が必要になるほど不確かな処理系しかない (または初期化処理も自分でかかなきゃいけないような低レイヤ) 分野もあるのは知ってるけどそれが普通ってことはない。
268(1): (ワッチョイ 9f79-1KRD) 2023/12/12(火)23:05 ID:I4UWTUvH0(1) AAS
>>267
言語仕様ではなく2度目のdlopenの初期化の話なんだからドキュメント化されてないなら何の保証もないでしょ
269: はちみつ餃子◆8X2XSCHEME (ワッチョイ 9f3e-ZkkM) 2023/12/12(火)23:55 ID:skpldDGw0(1) AAS
>>268
そういう意味で言ってたのならわかる。
「どうして元から代入する処理を入れてなかった?それが普通だろ?」というニュアンスで受け取ってたから元は dlopen しなおしで対処する想定ではなかったからそういうことを心配してなかった (する必要がなかった) という反応になった。
270: (ワッチョイ 37f2-YdMO) 2023/12/15(金)08:29 ID:a4YsmFKj0(1) AAS
板の名前変わった?
271(3): (ワッチョイ 6bbb-/1Gs) 2023/12/17(日)18:23 ID:kc2HrTf20(1) AAS
ポインタ変数にアドレスを代入するのはシャローコピーと言えると思いますか?
char s[] = "abc";
char *p = s; // shallow copy
272: (ワッチョイ 4b63-3PPy) 2023/12/17(日)18:40 ID:i7ihHaq10(1) AAS
果たしてコピーと呼んで良い操作ナノか
273(1): (ワッチョイ 1e5f-DkQ9) 2023/12/17(日)19:27 ID:mH/O4qym0(1) AAS
>>271
言えません
274: (ワッチョイ e34d-e8vO) 2023/12/17(日)19:32 ID:MfQY7qyQ0(1) AAS
>>273
?
275(1): (ワッチョイ cb62-dXDU) 2023/12/17(日)22:10 ID:UmzU+/ux0(1) AAS
シャローコピーはディープコピーと並べて語るときに区別するための用語であって、
代入は普通に代入と呼ぶのが、コミュニケーションにおいて適切だ、
と、自分が聞かれた場合なら答えるし、レビュー依頼された場合なら指摘します
276(2): (ワッチョイ e34d-e8vO) 2023/12/18(月)00:59 ID:Mvyif4Hn0(1/2) AAS
>>275
シャローコピーと言えると思いますか?
277: (ワッチョイ e34d-e8vO) 2023/12/18(月)00:59 ID:Mvyif4Hn0(2/2) AAS
指摘する前に答えろよ無能
278: (ワッチョイ 63c9-/1Gs) 2023/12/18(月)02:31 ID:BtLCMjh/0(1) AAS
シャローコピーでしょ
2つのポインタが同じ内容になってる訳だから
ちなみに、変数定義時の代入文はバインド(束縛する)と言った方が適切だな
279: (ワッチョイ dee7-DkQ9) 2023/12/18(月)09:17 ID:qIC94rZG0(1) AAS
>>276
言えません
280: (ワッチョイ 16ab-zIzn) 2023/12/18(月)09:38 ID:RUscEa1Z0(1/3) AAS
シャローコピーの要件からすると
ポインタ変数にアドレスを代入するだけでは成立せずに
リファレンス可能なオブジェクトを指してるポインタでないとまずい気がする
char *p = (char *)0x000; /* アドレスを代入してるぞ */
281(1): (ワッチョイ 6bbb-/1Gs) 2023/12/18(月)10:45 ID:RHsCrDES0(1) AAS
意見分かれますね
ではstrdupはディープコピーだと言えますか?
282: (ワッチョイ 4b63-3PPy) 2023/12/18(月)10:52 ID:kauj19Ts0(1/2) AAS
C言語にはオブジェクトと言う概念がないからなあ
お気持ちとしてどうかと聞かれれば、人それぞれで
283: (ワッチョイ efc0-UNLj) 2023/12/18(月)10:54 ID:PYgWDYAB0(1) AAS
いやそれぬるぽ
284: (ワッチョイ d663-/1Gs) 2023/12/18(月)12:07 ID:ccgmPeZz0(1/2) AAS
>>281
ファイルシステムや仮想記憶とか、コピーオンライトといって、書き込みが発生するまでは単なる参照先のコピーだけでコピー完了としてしまう
要するに何をもってコピーかを、先ずは定義してくれ
285: はちみつ餃子◆8X2XSCHEME (ワッチョイ d23e-/274) 2023/12/18(月)12:57 ID:vbeDxg2G0(1) AAS
それは C の概念モデルを前提にしていいだろ。
286: (ワッチョイ 16ab-zIzn) 2023/12/18(月)14:16 ID:RUscEa1Z0(2/3) AAS
C++ の 参照だったら概念含めてそのまんまだったんだろうな
int a;
int& b = a;
287: (ワッチョイ 12ad-9NgZ) 2023/12/18(月)14:52 ID:kcYk1zSZ0(1) AAS
>>271
言えると思う。
288: (スフッ Sd32-3CSV) 2023/12/18(月)16:19 ID:xiaHc48Fd(1) AAS
内容が値を表すメモリの位置 = オブジェクト
289(2): (ワッチョイ cb62-dXDU) 2023/12/18(月)17:05 ID:pYYMlhZJ0(1) AAS
>>276
「言わない」
代入をシャローコピーだとか言ってなにか騒いでる人があなたの周りにいるという話?なら、そいつバカだからあなたは相手にしなくていいよ。あなたはもっと大事な問題に取り組むべき
290: (ワッチョイ 4b63-3PPy) 2023/12/18(月)17:09 ID:kauj19Ts0(2/2) AAS
代入元の配列がスタック上なのかどうか、そちらの方がC言語的には重要
291: (ワッチョイ 16ab-zIzn) 2023/12/18(月)17:12 ID:RUscEa1Z0(3/3) AAS
関数内の自動変数へのポインタを関数の外へ持ち出したりすると…
292: (ワッチョイ 5f01-3PPy) 2023/12/18(月)18:48 ID:epkANb1d0(1) AAS
何かのポインタをメンバに持つ構造体の実体の複写
293(1): (ワッチョイ d663-/1Gs) 2023/12/18(月)23:27 ID:ccgmPeZz0(2/2) AAS
>>289
代入はコピーじゃないのか?
代入とコピーの本質的な違いは何だ?
294: (ワッチョイ 16cf-fH6R) 2023/12/18(月)23:33 ID:a4PUOo8N0(1) AAS
コピーには違いないけどディープとかシャローとか区別できるものじゃないってことだろ
295(1): (ワッチョイ 1279-F8eA) 2023/12/18(月)23:40 ID:6hD73gHu0(1) AAS
>>293
代入は演算の種類
コピーは演算した結果起こる作用
用語を論理的に整理できてないとお話にならないだろう
RustvsC++スレ辺りでまともな議論ができてないのはこれのせい
296: (ワッチョイ 4b46-AQ+F) 2023/12/19(火)08:23 ID:ijJJQ5/r0(1) AAS
>>295
そういうコトなら、>>271は
アドレスを代入演算した結果を、シャローコピーと言えるか、
という質問じゃないの?
297(3): (スププ Sd32-3CSV) 2023/12/19(火)09:34 ID:+6PK9xZxd(1/2) AAS
シャローコピーとかディープコピーとかはもともとPythonの概念ですよね?
298: (ワッチョイ 2701-NGr8) 2023/12/19(火)09:54 ID:hCROhcq70(1) AAS
は?
299: (ワッチョイ 2701-3PPy) 2023/12/19(火)10:05 ID:cwbunCZy0(1/2) AAS
>>289
馬鹿ってすぐ断定するよな
300: (ワッチョイ 77cd-UNLj) 2023/12/19(火)10:07 ID:KoTx3gw20(1/2) AAS
コピーとクローンは違うよな?
301(1): (ラクッペペ MMde-Y9Ov) 2023/12/19(火)10:13 ID:MIravlrKM(1) AAS
>>297
C++やJavaあたりが元だと思うけど
302: (ワッチョイ 4b63-3PPy) 2023/12/19(火)10:17 ID:gboy58yC0(1) AAS
そういうことで、
Cにはシャローコピーとかディープコピーとかの概念はない
303: (ワッチョイ cb62-dXDU) 2023/12/19(火)10:51 ID:E9BI8x9B0(1/2) AAS
少し前までスマートな人がたくさんいたのにいつの間にかバカしか居なくなった
304: (ワッチョイ cb62-dXDU) 2023/12/19(火)10:55 ID:E9BI8x9B0(2/2) AAS
>>297
違います
305(2): (ワッチョイ 5ee1-hm9h) 2023/12/19(火)11:32 ID:df21V+Ma0(1) AAS
>>301
LISPじゃね?深いコピーは演習なんかの定番だった気がする
306: (スップ Sd52-54/p) 2023/12/19(火)13:45 ID:3Nu9QseCd(1) AAS
>>305
比較の手段が参照と値と構造とで数種類あるしそうだろうね
この手の大抵の起源はLispだよ
307: (スププ Sd32-Hm2B) 2023/12/19(火)15:01 ID:+6PK9xZxd(2/2) AAS
Pythonの解説書には大概、ディープコピーとシャローコピーが載ってますよ
308: はちみつ餃子◆8X2XSCHEME (ワッチョイ d23e-/274) 2023/12/19(火)15:28 ID:J0ExAcTK0(1) AAS
>>305
もちろんそういう状況を扱っている事例は数多くある。
ただ、ざっと見た感じでは古いマニュアルでは「再帰的」とか「共有」とかいった語で説明するのが普通っぽい。
深い/浅いといった言い方が発生したのはもっと新しい言語でのことだと思う。
309: (ワッチョイ 2701-3PPy) 2023/12/19(火)19:44 ID:cwbunCZy0(2/2) AAS
複オジが粘着してそう
310(1): (ワッチョイ 77cd-UNLj) 2023/12/19(火)19:48 ID:KoTx3gw20(2/2) AAS
つか、Cは書いてる人にしか型が分からないからそんな器用な事は出来ないよな?
どっちのコピーも自前でちまちま作るしか無い
311: (ワッチョイ 92de-IA1d) 2023/12/19(火)19:53 ID:nmJwtfK30(1) AAS
呼称にこだわってる限りCなんて使えない
お上品な他の言語使ってりゃいいじゃん
312: (ワッチョイ cbd5-dXDU) 2023/12/20(水)05:56 ID:r5p/Itr10(1) AAS
>>310
その通りですよ
私はユーザが定義する集成型(structみたいなもの)を、PCをまたいでリモートコンピュータ上にコピーするもの(WindowsのC#とHP-UXのC)、を仕事で作った事があるのだけど、それをやるには型定義からガッツリ関わる仕組みを構築しないと無理なのよ。
自分はエクセルでやった(そして完璧にはできず特例処理だらけになった)けど、普通はDDLとか独自に作るでしょ
上の方で最初に話題出したヒトは多分、どういう問題空間でディープコピーとかシャローコピーを話題にする必要が生じるのか【すら】分かってないよ
そうだね 複オジ とか言われてた人の雰囲気と似てるね
313: (ワッチョイ b74b-gvj7) 2023/12/20(水)09:35 ID:/uXb+00h0(1) AAS
UPLIFT プレミアム・サービスのお知らせ
外部リンク:uplift.5ch.net
UPLIFT 主な特典
・連続投稿の規制を緩和します。
・スレッド作成時の規制を緩和します。
・5ch.netのスレッド表示画面に表示される広告を除去します。
・5ch.net専用ブラウザで5ch.netの過去ログを閲覧できるようになります。
・海外からのアクセス・ホスト経由からでも書き込みができるようになります。
・書き込みが規制されているプロバイダーからでも書き込みができるようになります。
・5ch.netを安定して利用できるように運営を支援できます。
省2
314: (ワッチョイ e3f0-HAvR) 2023/12/23(土)02:06 ID:cGlPuzRM0(1) AAS
>>297
もちろん概念としてはCの時代からある
しかし明確に言葉として定義したのはsmalltalkのはず
shallowCopyメソッドとかがある
315: (ワッチョイ 53d2-TKg5) 2023/12/23(土)10:35 ID:1vO40jtV0(1/7) AAS
smalltalk、凄いな!私はバートランド・メイヤーさん、すごく尊敬してます
javadocとかdoxygenみたいなシステムも、もうあの時代に彼はすでに形にして世に出してるんですよね
例外の説明とか、プログラムを契約の履行に例える話とかもそうだし、あとコメント論とかもイケてるんですよ
頭良すぎて周りが付いてくのに何年もかかってる気がする
316: (ワッチョイ 53d2-TKg5) 2023/12/23(土)10:43 ID:1vO40jtV0(2/7) AAS
てかまあ、Cのスレだね
でもCで構造体リモートコピーするにはさ、みたいな話をしても、多分誰も乗ってきてくれないよね
317: (ワッチョイ 5363-y73S) 2023/12/23(土)11:24 ID:MLKmoxlx0(1/2) AAS
それは話の持ってき方。プレゼン上手ならできる
318: (ワッチョイ 6f97-xkue) 2023/12/23(土)11:28 ID:j8bI1ONF0(1/2) AAS
そーゆーのに憧れてる層には土方言語のCはいらんだろw
319: (ワッチョイ 43a4-BWWG) 2023/12/23(土)11:41 ID:PYuibGoS0(1/8) AAS
だからさ、C言語の変数や構造体内の型宣言なんてイイカゲンなんだからそう言う話ははなから無理なんだよ
320: (ワッチョイ 53d2-TKg5) 2023/12/23(土)11:42 ID:1vO40jtV0(3/7) AAS
メッセージというか伝送パケットを作る話とかはどうですかね(皆さん興味ありますか)
タグ・レングス・バリュー形式がー、とか
バイナリvs文字列とか
(文字列にして伝送するのって遅いと思うでしょ、意外と速度okだったりします)
あと、message pack とか
321(1): (ワッチョイ 43a4-BWWG) 2023/12/23(土)11:44 ID:PYuibGoS0(2/8) AAS
ゼロ(0x00)が送れないから文字列は無理
322: (ワッチョイ 43a4-BWWG) 2023/12/23(土)11:46 ID:PYuibGoS0(3/8) AAS
経路によっては7ビット+パリティに解釈されるからバイナリは無理
323: (ワッチョイ 43a4-BWWG) 2023/12/23(土)11:49 ID:PYuibGoS0(4/8) AAS
結局、デバイスとかハードの特性を理解する必要があるんだよね
324: (ワッチョイ 5363-y73S) 2023/12/23(土)11:54 ID:MLKmoxlx0(2/2) AAS
メッセージの受け渡しでハードの特性まで理解する必要はないだろう
325: (ワッチョイ 43a4-BWWG) 2023/12/23(土)11:57 ID:PYuibGoS0(5/8) AAS
だっていまどきC言語使ってる人なんて、デバイス寄りのハードウェアコントロールとか、チープなCPUに搭載するソフトとかだろ?
326(1): (ワッチョイ 53d2-TKg5) 2023/12/23(土)11:59 ID:1vO40jtV0(4/7) AAS
>>321
おっと、反応サンキュー
0x00をデータとして送るのってあるある話題ですよねw
確かに「通信全部が」文字列で、nul文字終端だとすると無理。
でも、アタマにデータサイズがあって、それからデータがある形式ならば、仮に文字列が続いてると見える中に、まるでゴミ文字みたいに0x00が入っててもokなのよ
実は今のHTTPもそうなってたはず
327(2): (ワッチョイ 43a4-BWWG) 2023/12/23(土)12:04 ID:PYuibGoS0(6/8) AAS
>>326
途中のコードに文字列操作を一切使わないならいいが
改修はいって文字列操作する人が居たらアウトだよね?
328: (ワッチョイ 43a4-BWWG) 2023/12/23(土)12:09 ID:PYuibGoS0(7/8) AAS
最初からunsignd charのポインタとサイズを構造体にして扱えば良いだけ
329: (ワッチョイ 53d2-TKg5) 2023/12/23(土)12:09 ID:1vO40jtV0(5/7) AAS
大昔は7ビットしか通らない経路あったねw
5baseとかの時代でしょうか
今は、8ビットを8ビットで伝送するほうが稀でしょうね
8ビットを10ビットで符号化することで、ゼロやイチが連続する数が少なくなるようにすることで、データ自体でタイミングを取れる方法をIBMが発明したとかで
だからこんなに速くなったそうです
330(1): (ワッチョイ 53d2-TKg5) 2023/12/23(土)12:13 ID:1vO40jtV0(6/7) AAS
>>327
多分あなたの危惧が伝わってないです
改修案件でバグを作り込んだのに動作確認せずリリースしてしまうっていう事なら、工程管理ができてないって話でプロとしてダメ
メッセージ形式の仕様とは関係ないですね
331: (ワッチョイ 53d2-TKg5) 2023/12/23(土)12:17 ID:1vO40jtV0(7/7) AAS
(…もしや「複オジ」さんだったかな?)
332(1): (ワッチョイ 6f97-xkue) 2023/12/23(土)12:56 ID:j8bI1ONF0(2/2) AAS
やっぱりめんどくさい奴だったかw
あんたにレスがもらえないのはテーマのせいじゃないとわかれ
333: (ワッチョイ 43a4-BWWG) 2023/12/23(土)18:17 ID:PYuibGoS0(8/8) AAS
>>330
安易に文字列を使う仕様にしてるとバイナリ通らないの忘れるし思わぬバグを生む原因になるから、最初からバイナリ配列にするか文字列操作関数を一切使わない様にしないとな
334: (ワントンキン MM07-TKg5) 2023/12/24(日)00:00 ID:B84K7ZI6M(1) AAS
>>332
うん…(悲しい)
335(6): (ワッチョイ 4602-UkJf) [asge] 2024/01/05(金)10:30 ID:ph0QLfWd0(1) AAS
Perlとかで利用している設定ファイルがあるのですが、
Cで書いたプログラムでも同じファイルを設定ファイルとして読み込みたいです
設定ファイルですが、このような感じです
val = abc
str1 = $val/AAA
Perlでは「$val」を展開し、str1に「abc/AAA」と設定してくれるのですが、
Cから読み込む場合は、自分で展開する必要があると思ってます
それをやってくれるライブラリや関数等、ありますでしょうか
336: (ワッチョイ e563-7PFe) 2024/01/05(金)10:49 ID:xgizPOi+0(1) AAS
その程度なら、自作できるだろう
337(1): (スププ Sd62-Blk0) 2024/01/05(金)11:38 ID:VxELzJcZd(1/5) AAS
#define val abc
338: (スププ Sd62-Blk0) 2024/01/05(金)12:10 ID:VxELzJcZd(2/5) AAS
enum { val = abc }
339: (スププ Sd62-Blk0) 2024/01/05(金)12:13 ID:VxELzJcZd(3/5) AAS
enum の方はエラーになる
340: (スププ Sd62-Blk0) 2024/01/05(金)12:27 ID:VxELzJcZd(4/5) AAS
#define もエラーになる
341: (スププ Sd62-Blk0) 2024/01/05(金)12:30 ID:VxELzJcZd(5/5) AAS
#define val "abc"
342: (ワッチョイ 651a-R/a6) 2024/01/05(金)12:30 ID:qVR6C9yQ0(1/3) AAS
>>335
そういうのをどう解決するかを自分が考えて実現するのが楽しいのに…
自分なら
設定ファイルを「環境変数を設定する」に変更して、perlもCも環境変数から設定項目を読む に変更する。
そのために
perl側を変更する権利を得る
OSに依存して良い条件
を確保する様に、喫煙所に通う
343: (ワッチョイ 651a-R/a6) 2024/01/05(金)12:49 ID:qVR6C9yQ0(2/3) AAS
>>335
別の解決案
・Cに優しい形式(右辺を全部展開した形で、イコール前後のスペースもなし)で吐き直すツールを、perlで作る
・自分で全部Cで作る
・lex/yacc を使って軽言語解釈ルーチンを作る
それぞれデメリットがあって、質問に直接答える「そういったライブラリはあるか」に一番合ってるのが、最後のlex/yaccだけど、それは一番バカらしい答えでもある。お好きに
344: (ワッチョイ 651a-R/a6) 2024/01/05(金)12:51 ID:qVR6C9yQ0(3/3) AAS
>>337
君、答える側になれる実力ないだろ
345: (ワッチョイ 065f-414C) 2024/01/05(金)12:54 ID:KwPCWpVD0(1) AAS
sscanfで読めばよかろうもん
346: はちみつ餃子◆8X2XSCHEME (ワッチョイ 823e-slPv) 2024/01/05(金)13:07 ID:t0UUGhQq0(1/2) AAS
>>335
その説明では何をやりたいのか伝わってないので仕様書を書いてみて。
理想的なライブラリがあったとして、そのテストケースという形式でもいい。
曖昧模糊な要望だと説明が下手なだけでなく説明しようとしている内容が見当違いな可能性を疑う。
(いわゆるXY問題)
347: (ワッチョイ 2eab-zkkm) 2024/01/05(金)13:32 ID:38bnxq2E0(1) AAS
Cのソースでその展開もどきを行いたいのか
Cで書いてるプログラムがとあるファイル食って文字処理するんだけど、同じことを実現したいのか
348: (ワッチョイ 45bb-dhuT) 2024/01/05(金)13:37 ID:M4U6Kwpw0(1) AAS
>>335
これは実装するとなると簡易言語になっちゃうな
でも変数と変数参照だけだから大して難しくないよ
たぶん1000行ぐらいに収まる
349: はちみつ餃子◆8X2XSCHEME (ワッチョイ 823e-slPv) 2024/01/05(金)14:59 ID:t0UUGhQq0(2/2) AAS
どうしても既存の設定ファイルをそのまま使いたい、それを処理できるようなものが欲しいということなら
そんな都合の良いものがあるわけない。 自分で書くしかしょうがない。
完璧にそのままのフォーマットでなくおおよそ似た機能があればよいなら
TOML とか JSON とか YAML とかの広く使われているフォーマットを採用したほうが面倒が少ない。
Perl でも C でも処理できるライブラリがいくつもあるし。
これらには変数展開のような機能はないが、
設定ファイルで動的な操作を可能にするのは問題を引き起こしやすいと考えられていて、
アプリケーション側でやるかプリプロセッサでなんとかしたほうがよい。
(強いて言えば YAML のエイリアス機能は変数のようなものとも言えるけど文字列を結合したりは出来ない。)
逆に設定どころではなくユーザーによるカスタマイズをどんどんやってもらうようなものなら
省1
350: (ワッチョイ c2b5-R5Zd) 2024/01/05(金)15:39 ID:mdj5x9Xd0(1) AAS
Perlにそんな便利機能あったっけ
351: (ワッチョイ c6bb-bJ3A) 2024/01/05(金)18:09 ID:xFVV62H30(1) AAS
Cは遅延評価を積極的にやるための言語ではないからなあ
C++やC#ならあるんだけどね
lex/yacc はちょっと古くて
今なら flex/byson ですね
352: (ワッチョイ 42ad-nK/n) 2024/01/06(土)15:06 ID:NPThFXTg0(1) AAS
$ の変数展開しかやらないなら複雑な構文解析にはならないから全部自作した方が楽なのでは?
少し楽したいなら perl に読ませて $ 展開させた文字列に変換して出力したのを C の側で読むとかね。そうすると少し楽ができる。
これの問題は perl が使えない環境では動かないことかな。
上下前次1-新書関写板覧索設栞歴
あと 650 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.052s