デジタルちんぶろぐ

デジタルな話題

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  268  : 記事  0  : コメント  4419  : トラックバック  79

ニュース


技術以外は
ちんぶろぐ

記事カテゴリ

書庫

日記カテゴリ

C#にはプリプロが無いからという話を聞くけど、普段C/C++を使っている身からすると無いのは不便。

こういうことはしちゃいけないんだろうか?

hello.cs


using System;

#define HELLO "Hello, world!"

namespace Hello
{
    class SayHello
    {
        public static void Main(string[] args)
        {
            Console.WriteLine(HELLO);
        }
    }
}


このプログラムをC/C++のコンパイラのプリプロセッサでプリプロセスし、C#のコンパイラでコンパイルすればC/C++と同様にプリプロセッサの恩恵を受けることが出来る。

つまり、

cl /EP hello.cs > hellow.cs

csc hellow.cs

とコンパイルし実行すれば

Hello, world!

と出力される。この方法は勿論Javaでも使用することが出来る。

このような事をしてはいけないんだろうか?

 

仕事ではダメと言われそうだけどw

投稿日時 : 2008年8月15日 23:16

コメント

# re: C#とプリプロセッサー 2008/08/15 23:28 Hirotow
インテリセンス使えない+先頭以外の場所に#defineがあるからエディタが怒るのでダメです。
おとなしくconstやリソースを使うといいです。

# re: C#とプリプロセッサー 2008/08/15 23:38 あんどちん
プリプロで出来ることは単純文字列置換だけってわけじゃないですけど。
#define MAX(a,b) ((a) > (b)) ? a : b
だって出来るし(無論これも文字列置換だけど)。
C#はさっぱりなので知りませんが、こういうのもconstやリソースで出来るならそれでもいいと思います。
そもそもIDE使うことなんて考えてなかったのがダメなのかなぁ


# re: C#とプリプロセッサー 2008/08/15 23:55 アキラ
アンダース(C#設計者)が、マクロは入れない方針だそうで、何回提案されても蹴ってるそうです。

# re: C#とプリプロセッサー 2008/08/16 0:12 Hirotow
そういえばインライン化での最適化とかどうなってるのか少し気になりますね。

# re: C#とプリプロセッサー 2008/08/16 9:24 凪瀬
C/C++のプリプロセッサってJavaみたいな別言語のソースでもプリプロセスできるのか!
構文解析とかはせずに置換とかだけやってるんですかね。

Javaの場合はJavaVM用のバイトコード、C#の場合はCLIを書き出すのが王道だけど、
簡易言語を作るとか、言語の簡易拡張をするならば、JavaやC#のソースを生成して
そこからさらにバイトコード/CLIに落とすというのはアリでしょう。

いずれにせよ、クローズな場所でしかつかえないでしょうし、デメリットも考慮しなくてはなりませんけどね。

# re: C#とプリプロセッサー 2008/08/16 13:52 melt
Javaのソースをプリプロセスするハックは、容量のほとんど入らなかった時代の携帯Javaに重宝しましたねー。

final int Hoge = 0; とか書くと、それ自体がバイトコードに置き換わって容量を取るので、代わりに #define Hoge 0 とか書いてました。

あと、
int a;
int b;
...
とか複数の変数があっても容量を取るので、変数は出来る限り int にして、
int[] v = new int[100];
#define v[0] a
#define v[1] b
...
とか書いてましたねー。

もちろんクラスをバンバン作ると容量をすぐにあふれちゃうので、1つのクラスに処理を全部詰め込む感じでした。
極力関数も作らず、短い処理ならマクロにしてしまったりとかも……。

古い時代のバッドノウハウですw

# re: C#とプリプロセッサー 2008/08/16 19:06 なちゃ
まあそういうのは入れない思想ですけど、FILEとLINEの定義とかは欲しかったり。
まあそれ言い出すと型名やメソッド名とかまで欲しくなって収拾つかなくなるのですが。


# re: C#とプリプロセッサー 2008/08/17 18:10 あんどちん
> アンダース(C#設計者)が、マクロは入れない方針だそうで、何回提案されても蹴ってるそうです。
正当な理由があってそうしているんでしょうが、それだけ聞くと
「いやぁねぇ、頭でっかちの人って。」
と思っちゃう。


> そういえばインライン化での最適化とかどうなってるのか少し気になりますね。
定数式ならコンパイル時計算で済んじゃうでしょうね。


> C/C++のプリプロセッサってJavaみたいな別言語のソースでもプリプロセスできるのか!
> 構文解析とかはせずに置換とかだけやってるんですかね。
Yes, 構文解析はパーサーのお仕事です。

> Javaのソースをプリプロセスするハックは、容量のほとんど入らなかった時代の携帯Javaに重宝しましたねー。
ナカーマ!ってかやっぱり同じ事考える人はどこにでもいるんだ。

> まあそれ言い出すと型名やメソッド名とかまで欲しくなって収拾つかなくなるのですが。
プリプロセッサーではそこまでは無理ですね。C99だと関数名を取得できるマクロが追加されていた思いますが。




# online apotheke deutschland 2023/09/26 15:31 Williamreomo
https://onlineapotheke.tech/# п»?online apotheke
gГ?nstige online apotheke

# п»їonline apotheke 2023/09/27 0:05 Williamreomo
https://onlineapotheke.tech/# internet apotheke
versandapotheke deutschland

# gГјnstige online apotheke 2023/09/27 3:25 Williamreomo
https://onlineapotheke.tech/# internet apotheke
internet apotheke

# online apotheke gГјnstig 2023/09/27 8:55 Williamreomo
https://onlineapotheke.tech/# online apotheke deutschland
internet apotheke

# п»їonline apotheke 2023/09/27 9:45 Williamreomo
https://onlineapotheke.tech/# versandapotheke versandkostenfrei
versandapotheke

# п»їonline apotheke 2023/09/27 10:58 Williamreomo
http://onlineapotheke.tech/# online apotheke versandkostenfrei
п»?online apotheke

# comprare farmaci online con ricetta 2023/09/27 18:13 Rickeyrof
acheter sildenafil 100mg sans ordonnance

# treatments for ed https://edpillsotc.store/# - cures for ed 2023/10/08 5:00 EdPills
treatments for ed https://edpillsotc.store/# - cures for ed

# best mexican pharmacies 2023/10/16 22:44 Dannyhealm
Their global health resources are unmatched. https://mexicanpharmonline.shop/# mexican mail order pharmacies

# canadian pharma 2023/10/17 15:47 Dannyhealm
Their worldwide reach ensures I never run out of my medications. https://mexicanpharmonline.com/# mexican mail order pharmacies

# best online indian pharmacies 2023/10/18 17:37 Dannyhealm
Trusted by patients from all corners of the world. https://mexicanpharmonline.shop/# mexican pharmaceuticals online

# canada pharm 2023/10/18 18:46 Dannyhealm
The widest range of international brands under one roof. https://mexicanpharmonline.com/# mexico drug stores pharmacies

# online doctor prescription canada 2023/10/18 22:50 Dannyhealm
Learn about the side effects, dosages, and interactions. http://mexicanpharmonline.shop/# mexico drug stores pharmacies

# price of valtrex https://valtrex.auction/ order valtrex 2023/10/25 1:53 Valtrex
price of valtrex https://valtrex.auction/ order valtrex

# Paxlovid over the counter https://paxlovid.bid/ paxlovid india 2023/10/26 2:45 Paxlovid
Paxlovid over the counter https://paxlovid.bid/ paxlovid india

# doxycycline generic https://doxycycline.forum/ doxycycline prices 2023/11/25 16:34 Doxycycline
doxycycline generic https://doxycycline.forum/ doxycycline prices

# migliori farmacie online 2023 https://farmaciait.pro/ migliori farmacie online 2023 2023/12/04 12:56 Farmacia
migliori farmacie online 2023 https://farmaciait.pro/ migliori farmacie online 2023

# how to get clomid for sale 2023/12/27 5:44 RaymondGrido
http://paxlovid.win/# paxlovid india

# can you buy prednisone over the counter in canada https://prednisonepharm.store/ prednisone price canada 2024/01/20 18:58 Prednisone
can you buy prednisone over the counter in canada https://prednisonepharm.store/ prednisone price canada

# sweetie fox video https://sweetiefox.pro/ - sweetie fox full video
2024/03/06 23:33 SwitieFox
sweetie fox video https://sweetiefox.pro/ - sweetie fox full video


Post Feedback

タイトル
名前
Url:
コメント: