5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

プリプロセッサについて熱く語るスレ。

1 :デフォルトの名無しさん:03/07/15 02:26
さぁ語れ。

2 :デフォルトの名無しさん:03/07/15 02:30
プリプロセッサ嫌い。

3 :デフォルトの名無しさん:03/07/15 02:51
LISP最強

4 :デフォルトの名無しさん:03/07/15 03:08
プリプロセッサって何か中途半端感があるなぁ。Lisp みたいに言語機能として不可欠な物にも
なってないし、Java みたいに全く使わないって訳にもいかないし。

いっその事言語の外に出しちゃえば潔いのに。

5 :デフォルトの名無しさん:03/07/15 03:38
多少の脱線は見逃してやるからCスレでやれ

6 :デフォルトの名無しさん:03/07/15 03:58
#define DELEGATE(x,y) inline x() { return y::x; }
class File {
    stream str;
public:
    DELEGATE(open,str)
    DELEGATE(close,str)
};
ん-。返り血がなぁ。

7 :デフォルトの名無しさん:03/07/15 06:42
>>4
> いっその事言語の外に出しちゃえば潔いのに。
何の「言語のの外」といいたいのか知らんが、一応CPPはC言語とは別。

8 :デフォルトの名無しさん:03/07/15 09:11
本気で?

9 :山崎 渉:03/07/15 09:33

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

10 :デフォルトの名無しさん:03/07/16 06:35
元々Cコンパイラ用に作られたのは名前が示す通りだが、言語的には別物。
たとえば#ifでsizeofを使えないのはそのため。

実際xmkmfとかxrdbはコンパイラではないけどcppを使ってる。

11 :ヽ(´ー`)ノ:03/07/17 12:36
とりあえず、boost/preprocessor を。多分 C でも使えるだろ(適当
公式ドキュメント
 http://boost.org/libs/preprocessor/doc/


12 :デフォルトの名無しさん:03/07/19 01:59
↓氏ね

13 :デフォルトの名無しさん:03/07/19 09:35
プリプロセッサといえば、林晴比古の本!

14 :デフォルトの名無しさん:03/07/19 09:37
↑氏ね

15 :デフォルトの名無しさん:03/07/19 09:45
#define A 0
#ifdef A
...
ということがやりたいのですが、
...の部分の評価へと入ってきてしまいます。
#ifdef (A==0)
などと書かなくてはいけないんですか?

16 :デフォルトの名無しさん:03/07/19 09:57
#undef A

17 :デフォルトの名無しさん:03/07/19 10:05
拡張性の高い外部マクロプロセッサを教えてやろう。




Perl

18 :ヽ(´ー`)ノ:03/07/19 10:14
m4…いや、何でもない。

19 :デフォルトの名無しさん:03/07/19 10:19
もういい加減、プリプロセッサ捨てて
Scheme取り入れてもいいんじゃねえの?
boost/preprocessor/*を見てると涙が出てくる。

20 :デフォルトの名無しさん:03/07/19 12:25
>>15
#if A
...

21 :デフォルトの名無しさん:03/07/27 16:43
HOGE が定義されていない場合に関数 foo() を無効にする場合は

#ifndef HOGE
#define foo(x)
#endif

でいいのでしょうか?
一応動作しているようなのですが、どうするのが一般的ですか?
C、C++(共にVC++)での使用を考えています。


22 :デフォルトの名無しさん:03/07/27 16:47
http://www.tv-asahi.co.jp/best/updating_dex/toppage/index.html

【田代まさしに仕事をやろう!!】
盗撮・覚醒剤所持などの理由で現在執行猶予中の田代まさし氏を
テレビ出演させて仕事をやろう!という主旨です。
『あの人は今?』の『投票する』項目を選べば投票フォームに入れます。
皆さんのご協力があれば、田代氏のテレビ出演は夢ではありません。

*他スレにコピペをお願いします

23 :デフォルトの名無しさん:03/07/27 16:49
#ifdef HOGE
#define FOO(x) foo(x);
#else
#define FOO(x)
#endif

>>21
okだと思います。

24 :デフォルトの名無しさん:03/07/27 16:55
>>21
C++ならプロトタイプ宣言を#ifdefで囲めばいいけど、Cだとそうはいかないんだよな・・・

25 :24:03/07/27 17:01
あー、無効ってそういう意味か。
NDEBUGが定義されている時のassertの挙動みたいなものか。

26 :24:03/07/27 17:06
関数のプロトタイプがint Foo(int,int);だとしたら、
#ifdef HOGE
#define foo(x,y) Foo(x,y)
#else
#define foo(x,y) 0
#endif
こんな感じにしないといけないな。
消してしまうと、HOGEが定義されていなくてa=foo(a,5);こんなことするとエラーになる。
戻り値の型がvoidならそもそも受けようとするのが間違いだから消してもいいかもしれないけど。

27 :デフォルトの名無しさん:03/07/27 17:23
ああ、俺の待ち望んだスレがある

28 :デフォルトの名無しさん:03/07/27 17:43
>>26
void式でもカンマ演算子でつながれることを考えると、
消したら通らなくなるソースがあるかもしれない。
よって、
((void)0)

29 :21:03/07/27 18:14
>>23-26
レスありがとうございました。

>>23
なるほど、間接的に指定するわけですね。
それを使わせて貰います。

>>24-26 >>28
そういった状況では気を付けます。


30 :デフォルトの名無しさん:03/07/27 19:07
おまいら、プリプロセッサでやっちゃったバグを晒してください。

31 :デフォルトの名無しさん:03/07/27 19:21
#ifdef HOGE

#endif
:
:
#define HOGE
:
:

もうアホかと。バカかと。

32 :26:03/07/27 19:31
>>28
ああそうか。なるほど。


33 :デフォルトの名無しさん:03/07/27 19:39
>>31
それと#include絡みの不具合はたまにやるな・

34 :デフォルトの名無しさん:03/07/27 19:39
>>30
50行くらいのでっかいマクロを\でつないで作った。
コンパイルエラーが全部同じ行で出るから作った本人以外原因がわからなかった。

テンプレートのエラーメッセージが分かりにくいって言っても、
これよりはやっぱりマシだと思った。

35 :デフォルトの名無しさん:03/07/28 01:18
>コンパイルエラーが全部同じ行で出るから作った本人以外原因がわからなかった。

漏れの職場ならこの程度で原因分からない社員は派遣扱い、だな。w


36 :デフォルトの名無しさん:03/07/28 03:42
そういう意味ではELとかやばくね?

37 :ヽ(´ー`)ノ:03/07/28 12:39
> コンパイルエラーが全部同じ行で出るから
デバッガ使えYO!! ていうか、50 行ぐらいデバッグできると思われ。


38 :デフォルトの名無しさん:03/07/28 13:19
>>37
コンパイルエラーをデバッグで追えるのか。凄い人だなぁ。

39 :デフォルトの名無しさん:03/07/28 13:58
コンパイラをトレースするんだYO!!

40 :ヽ(´ー`)ノ:03/07/28 14:17
うへ。でもコンパイラ通らないエラーなら目で見て分かると思うんだけど…。

41 :デフォルトの名無しさん:03/07/28 15:21
いいものを教えてやろう。-Eオプションというんだ。

42 :ヽ(´ー`)ノ:03/07/28 15:35
(´-`).。oO(…それは gcc だけなんじゃ…)

43 :デフォルトの名無しさん:03/07/28 17:03
UNIX系のccはほとんど受け付けるよ。

44 :デフォルトの名無しさん:03/07/28 17:50
由緒正しいccってのはどこのものなの?
UnixWareに入ってるやつ?

45 :デフォルトの名無しさん:03/07/28 18:23
可児飯謹製

46 :デフォルトの名無しさん:03/07/28 18:59
立地ーだろ。
可児飯はCコンパイラは作ってない。


47 :デフォルトの名無しさん:03/07/28 21:19
pccって立地ーだっけ。

48 :デフォルトの名無しさん:03/07/28 21:59
日本人の癖にヤンキー言うなヴォケが。

49 :デフォルトの名無しさん:03/07/29 10:30
pccはJohnson


50 :デフォルトの名無しさん:03/07/30 18:12
C99のPPってどうよ。

http://seclan.dll.jp/c99d/c99d02.htm

51 :デフォルトの名無しさん:03/07/30 19:03
// any comment \
printf("hoge");

↑の2行をプリプロセスすると (1)一行目だけ消える (2)二行とも消える
のどっちが言語仕様的に正当なんでしょう?
つまり行継続の結合処理とコメント除去処理の順番は決まっているのかということです。

52 :デフォルトの名無しさん:03/07/30 19:28
まず結合だと思った。

53 :デフォルトの名無しさん:03/07/30 19:47
Cコンパイラに日本語通らなかった時代、日本語コメントの最後の文字の
二バイト目が\だと・・・というエラーで苦しんだことを思い出した。
「表」とかだな。

54 :名無し@沢村:03/07/30 22:24
ヌヒ達よ。プリプロセッサと言えば、10年くらい前に林晴比古の書いたCプリプロセッサパワーだろ。
これぞ最強のプリプロセッサ本だ。もまえらも読め!

55 :デフォルトの名無しさん:03/07/31 02:10
禿同。一部の人間はこの話題振ると、盛り上がったり
盛り下がったり・・・若さ故の過ちというかな。

56 :デフォルトの名無しさん:03/07/31 02:22
坊やだからさ。

57 :デフォルトの名無しさん:03/07/31 03:04
Cのマクロは色んな意味で危険なのだ。
マクロに関する障害報告は、少なくない。

58 :山崎 渉:03/08/02 02:10
(^^)

59 :デフォルトの名無しさん:03/08/09 17:43
>>54の本を読んでみた。
誰でも思いつく以上のことは書かれていないような気がする。
##演算子を駆使したトリッキーなコードを期待していたせいもあって
つまらないと感じたし、実用性もイマイチだと思う。(もしかして##演算子が規定される以前の本?)
何か、もっといい教科書はないかね。


60 :デフォルトの名無しさん:03/08/09 19:33
>>59
boost/libs/preprocessor/doc/index.html

61 :デフォルトの名無しさん:03/08/09 19:52
>>60
thx!
あなたはどちらかというと神だ。

62 :デフォルトの名無しさん:03/08/10 11:31
>>60-61
>>11
激しく基本。

63 :山崎 渉:03/08/15 16:15
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

64 :デフォルトの名無しさん:03/08/16 18:17
BOOST_PP_IDENTITY("保守")()

11 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)