C言語なら俺に聞け(入門編)Part 127at TECH
C言語なら俺に聞け(入門編)Part 127 - 暇つぶし2ch281:デフォルトの名無しさん
15/03/17 12:33:04.70 f6px5vQy.net
バージョン数多くないなら #ifdef 使えば?

282:デフォルトの名無しさん
15/03/17 13:27:43.83 nDJgD8we.net
>>278
ここには、質問に言いがかり付けるバカしかいないから他に行った方が良い。
#define VERSION 0001
#define HNAME_(name) data_ ## name ## .h
#define HNAME(name) HNAME_(name)
#define STR_(x) #x
#define STR(x) STR_(x)
#include STR(HNAME(VERSION))

283:デフォルトの名無しさん
15/03/17 14:54:48.05 he3uyXd7.net
>>282
STR_とSTRの二段階にしないと
うまく展開出来ないのはCの仕様なの?

284:デフォルトの名無しさん
15/03/17 15:08:15.69 pZ5buOHw.net
仕様に明確化されてるかは知らない
"HNAME(VERSION)" と引数をそのままリテラル化するのと
HNAME(VERSION) の展開結果 data_0001.h を
"data_0001.h" とリテラル化するのを区別するのにそうなってしまってるという意識

285:デフォルトの名無しさん
15/03/17 16:15:28.23 nDJgD8we.net
>>283
そうだよ
引数置換より#, ##の処理が先に行われると規定されている

286:デフォルトの名無しさん
15/03/17 23:37:14.88 mPSuZyYO.net
>>285
どういうこと?
kwskぷりーず

287:デフォルトの名無しさん
15/03/18 00:53:00.96 +/Z0nvoo.net
>>282
257です。
ありがとうございます。うまくいきました。
けど、中身がさっぱりわからない…
#define HNAME(name) HNAME_(name)

#define STR(x) STR_(x)
のおかげでできていると思うんですが…
マクロを順に展開して表示してくれるツールってあるんでしたっけ?
VisualStudioにマクロ展開の機能があった気もしますけど。

288:デフォルトの名無しさん
15/03/18 01:05:22.37 mHp9M5nm.net
似たのは /p オプションだけども、プリプロセッサ処理後の結果を出力するだけで
プリプロセッサの処理過程を順に追っかけるのとは違うしなぁ

289:デフォルトの名無しさん
15/03/18 12:14:59.34 +JhByqZK.net
>>286-287
nextのC言語なら俺に聞けの3,4
URLリンク(next) 2ch.net/tech/1368680114/3

290:デフォルトの名無しさん
15/03/19 02:58:06.33 noU2qMQu.net
>>285-286
#は、" " ダブルクォーテーションで囲む。
##は文字列の連結
#define STR_(x) #x
x → "x"
#define STR(x) STR_(x)
でも一般的には、頻繁に更新されるデータを、
ヘッダに定義したり、マクロを使ったりしない。
良いプログラミングではないのは確か

291:デフォルトの名無しさん
15/03/20 10:08:15.87 JPS8a/86.net
ある処理を行いたいとします
でも他の処理が実行されているときはできません
他の処理の実行はflag[i]で管理されているとします。
自分の実行フラグを仮にexeflag=TRUEでスタートして他の処理のチェックに
for(i=0;i<自分以外の最大値;i++) exeflag=exeflag&~flag[i];
とかく場合と素直に
for(i=0;i<自分以外の最大値;i++)
{
if(flag[i]==TRUE)
{
exeflag=FALSE;
break;
}
}
と書く場合、動作は違いますか?
上記だとnot演算の時点で値が変わっちゃうからやらない方がいいですか?

292:デフォルトの名無しさん
15/03/20 12:45:42.33 PaYW+yLx.net
>>291
どう見ても違うでしょ。
気にしてない部分かもしれないけど。
前者は必ずループ最後までまわる。
後者は確定した時点で止まる。

293:デフォルトの名無しさん
15/03/20 13:17:11.47 8sMOXdGr.net
どちらもアトミックでないので誤り。
ビット演算と論理演算が混ざってるし、ループの判定条件もデタラメだし、
基礎から学んだ方が良い。

294:デフォルトの名無しさん
15/03/24 20:19:36.28 l6Xdc+1e.net
すみません、最近始めたばかりなのですがよろしければご教授お願いしたいです
文字列 (str) を渡されると URL を開いて、そのページに「404」が含まれていたら 1 を、含まれていなければ 0 を返すような関数を作るにはどうしたらいいですか?
str に xyz が代入されている時に実行すると URLリンク(google.com) を開くという感じにしたいです

295:デフォルトの名無しさん
15/03/24 22:54:11.36 jbljGHry.net
1から作る場合は、ソケット通信、HTTPプロトコルを勉強して作らないといけないかも。
ここを参考にしてみると良いかも
URLリンク(x68000.q-e-d.net)
動作させる環境によるけど、外部コマンドを起動して
その結果を受け取る形で作ることが出来るかもしれない。
その場合は、system popenなどの関数を調べてみると良いかも。
かもばかりですみません。

296:デフォルトの名無しさん
15/03/24 23:00:33.86 d1n69A/m.net
とりあえずPHPで。
PHPソースは、ヒップホップPHPというソフトでC言語へもコンバート可能。

297:デフォルトの名無しさん
15/03/24 23:30:18.39 8sshk8/M.net
>>295
㌧、これ参考になるなぁ

298:デフォルトの名無しさん
15/03/24 23:30:38.57 2rijsrHp.net
cURL

299:デフォルトの名無しさん
15/03/24 23:38:51.00 d1n69A/m.net
初心者は多く勉強したらいいと思うだろうが。
少なく楽に勉強して同一成果を達成するほうが大事だと思うが。

300:デフォルトの名無しさん
15/03/25 00:51:41.00 kIwvCb1k.net
スクリプトの方が楽だな

301:デフォルトの名無しさん
15/03/25 17:33:57.85 qwDV7O5C9
勉強の量の多い少ないから始めるやつは何やっても無駄
まず目的ありきでそのために何が必要かとトップダウンするにせよ
興味を持ったものを小突くことからボトムアップするにせよ
いずれもモチベーションが足りなきゃ同じことだ


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch