問題タブ [c-preprocessor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - このプリプロセッサマクロを#includeに置き換えるにはどうすればよいですか?
更新: 明らかに、マクロではなくテンプレートまたは基本クラスを使用してこれを実行する必要があります。残念ながら、さまざまな理由で、テンプレートや基本クラスを使用できません。
現在、私はマクロを使用して、次のようにさまざまなクラスのフィールドとメソッドの束を定義しています。
FIELDS_AND_METHODS
は、文字列化およびトークン貼り付け演算子を使用する複数行のマクロです。
これを次のようなものに置き換えたいと思います
ここでは、クラスの名前(以前はマクロのパラメーター)を#defineし、FieldsNMethods.h
ファイルには元のマクロのコンテンツが含まれています。ただし、私は#includeしているので、デバッグ時に実行時にコードにステップインできます。
TYPE_NAME
ただし、ファイル内のプリプロセッサシンボルの「文字列化」と「トークンの貼り付け」に問題がありFieldsNMethods.h
ます。
たとえば、でクラスのデストラクタを定義したいFieldsNMethods.h
ので、次のようにの値を使用する必要がありTYPE_NAME
ます。
しかし、TYPE_NAME
その値に置き換えられました。
私が試みていることは可能ですか?マクロ定義を使用していないため、文字列化演算子とトークン貼り付け演算子を直接使用することはできません。
objective-c - Xcode でプリプロセッサ シンボルを定義する方法
Xcode プロジェクトでプロパティを設定することにより、条件付きコンパイルのシンボルを設定することは可能ですか?
私の目的は、インポート/インクルードを使用せずにすべてのファイルで使用できるシンボルを作成して、一部のプロジェクトで共通クラスのセットが特別な動作を行えるようにすることです。次のように、独自の記号を使用します。
c - マクロ名に有効な文字は何ですか?
C スタイルのマクロ名は、識別子と同じ命名規則に従いますか? コンパイラのアップグレード後、レガシー アプリケーションに対して次の警告が出力されるようになりました。
このコード行は、アンパサンドの ASCII 値定数を定義しています。
この定義(私が知る限り、実際にはどのコードでも参照されていません)はバグが多く、「CHAR_AMPERSAND」のようなものに変更する必要があると思いますか?
c++ - C の名前空間
Cの名前空間をエミュレートするためにCプリプロセッサを (ab) 使用する方法はありますか?
私はこれらの線に沿って何かを考えています:
これは次のように変換されます。
objective-c - C プリプロセッサの代替品
Cおよび Objective-C のソース コードを前処理するために、 Cプリプロセッサ以外のものを使用することに興味があります。良い代替手段はありますか?
例としては、Cコードの途中で python や perl のスニペットにエスケープできるようにし、そのスニペットがCを吐き出し、それが通常どおりコンパイルされるようなものです。
c# - C# のフレームワーク バージョンに応じた条件付きコンパイル
次のようなものを許可するプリプロセッサシンボルはありますか
またはこれを行う他の方法はありますか?
c - Cプログラムのテキストファイルをchar[]として「#include」する
コンパイル時にテキスト ファイル全体を文字列として C プログラムに含める方法はありますか?
何かのようなもの:
ファイル.txt:
/li>main.c:
/li>
標準出力に出力する小さなプログラムを取得する「これは小さなテキスト ファイルです」
現時点では、ハックっぽい python スクリプトを使用しましたが、これは見栄えが悪く、変数名が 1 つしかないため、別の方法を教えてもらえますか?
c# - プリプロセッサ ブロックの終了時に整数値が変更される
コードのプリプロセッサ ブロックの最後で変数が変更されているように見えるコードのチャンクがあります。
おそらく20000を割り当てた後、デバッガーinitialKeyCount = 19969でこれを実行すると、これを少しいじって、initialKeyCountへの割り当てが最初のプリプロセッサブロック内で正しいことがわかりましたが、コードが最初のプリプロセッサを離れるとすぐにブロックすると、値が魔法のように 19969 に変わります。
この動作は、変数が最初のプリプロセッサ ブロックの内部または外部で宣言されているかどうかに関係なく同じです。値は、2 番目のプリプロセッサ ブロック内では 19969 のままです。
プリプロセッサ ブロックで行われた割り当ては、そのブロックの外側では定義されていませんか? それは間違っているようですが、ここで起こっていることのようです。
c# - C#のプリコンパイラから現在のDateTimeを取得するにはどうすればよいですか?
C# 3.0 では、クラスのバージョンを含むと思われるプロパティがあります。バージョン番号は、単にコンパイルの日付と時刻です。現在、次のコードがあります。
このプロパティは現在の日付と時刻を返すため、これは明らかに間違っています。では、プリコンパイラはコンパイル時に DateTime を出力できますか? この場合、以下のようなことができます。
c++ - これはマクロで省略記号を使用できますか? テンプレートに変換できますか?
適切なロギングを行うために CLogClass を実装したので、マクロも定義しましたが、1 つのパラメーターでしか機能しません...
まあ、2つ以上のパラメータで呼び出されると失敗します:( ...それを回避することはまったく可能ですか?どうにかしてテンプレートに変換できますか?
編集: Variadic マクロは VS 2005 で導入されました (しかし、私は現在 VS 2003 にいます...)。何かアドバイスはありますか?