問題タブ [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++ - 可変引数リストを取るデバッグ専用関数を作成するにはどうすればよいですか? printf() のように
と同じパラメータでデバッグロギング機能を作りたいprintf
です。ただし、最適化されたビルド中にプリプロセッサによって削除できるもの。
例えば:
可変引数マクロを見てきましたが、すべてのプラットフォームで利用できるわけではありません。gcc
それらをサポートしますが、msvc
しません。
c++ - #includeの違いは何ですかおよび#include"filename"?
include
CおよびC++プログラミング言語では、次のように、山かっこを使用することとステートメントで引用符を使用することの違いは何ですか?
#include <filename>
#include "filename"
objective-c - 「null 定義マクロ」とは何ですか?
Objective-C と Cocoa を学んでいます。私が取り組んでいるAppleのチュートリアルには、次のような補足説明があります。
IBOutlet
コンパイル時に C プリプロセッサによって削除される null 定義のマクロです。
興味があります - null 定義マクロとは何ですか?
c# - C# プリプロセッサ
C# 仕様にはプリプロセッサと基本的なディレクティブ (#define、#if など) が含まれていますが、言語には C/C++ などの言語に見られるような柔軟なプリプロセッサはありません。このような柔軟なプリプロセッサの欠如は、Anders Hejlsberg による設計上の決定であったと思います (ただし、残念ながら、これについての言及は現在見つかりません)。経験上、これは確かに良い決断でした。C/C++ をたくさん使っていた頃には、非常にひどい保守不可能なマクロが作成されていたからです。
とはいえ、もう少し柔軟なプリプロセッサが役立つと思われるシナリオはたくさんあります。次のようなコードは、いくつかの単純なプリプロセッサ ディレクティブによって改善される可能性があります。
このような非常に単純なケースを処理するプリプロセッサを作成するのは良い考えでしょうか? Steve McConnell はCode Complete (p208)で次のように書いています。
独自のプリプロセッサを作成 する 言語にプリプロセッサが含まれていない場合、プリプロセッサを作成するのはかなり簡単です...
私は引き裂かれています。このような柔軟なプリプロセッサを C# から除外することは、設計上の決定でした。ただし、私が非常に尊敬している著者は、状況によっては問題ないかもしれないと述べています。
C# プリプロセッサをビルドする必要がありますか? 私がやりたい簡単なことをするものはありますか?
c - Cエディターで自動定義...なぜですか?
EclipseがC プロジェクトで新しいファイル ( .cまたは.h#define
ファイル) を作成すると、エディターは常に次のようにファイルの先頭に を#define
自動作成します。このようなファイルの
私は他の編集者もこれを行っているのを見てきました (Codewright と SlikEdit だと思います)。#defines
問題なく削除できるので、エディターに対して何もしていないようで、それらを使用する理由が思いつきません 。なぜそこにいるのか誰か知っていますか?
c++ - Visual C++ で可変引数リストを使用してマクロを作成する方法はありますか?
私の知る限り、gcc では次のように記述できます。
VC++でそれを行う方法はありますか?
c++ - 「ファイルの最後に改行がありません」コンパイラ警告
一部の C++ コンパイラで次の警告が表示される理由は何ですか?
ファイルの最後に改行がない
ソース/ヘッダー ファイルの末尾に空の行が必要なのはなぜですか?
c# - 異なるバージョンの .NET に固有のセクションを含むコードをどのように記述すればよいですか?
私のソース コードは、.NET バージョン 1.1 と 2.0 の両方をサポートする必要があります。異なるバージョンをテストするにはどうすればよいですか?また、この状況に対処する最善の方法は何ですか?
コードの 2 つのセクションを別々のクラス、メソッドなどにインラインで配置する必要があるかどうか疑問に思っています。どう思いますか?
c++ - このマクロは関数に変換できますか?
コードをリファクタリングし、今では嫌うように教えられている #define をすべて取り除いているときに、構造内の要素の数を計算するために使用されるこの美しさに出くわしました。
そのままでも非常に便利ですが、インライン関数やテンプレートに変換できますか?
OK、ARRAYSIZE の方が適切な名前ですが、これはレガシー コード (どこから来たのかわかりません。少なくとも 15 年前のものです) であるため、「そのまま」貼り付けました。
c++ - C ++マクロはいつ有益ですか?
Cプリプロセッサは、C ++コミュニティによって正当に恐れられ、敬遠されています。インライン関数、定数、およびテンプレートは、通常、より安全で優れた代替手段#define
です。
次のマクロ:
型安全性よりも決して優れているわけではありません。
しかし、マクロにはその場所があります。プリプロセッサなしでは実行できないマクロの用途をリストしてください。
投票できるように、各ユースケースを別々の回答に入れてください。前処理者なしで回答の1つを達成する方法を知っている場合は、その回答のコメントでその方法を指摘してください。