問題タブ [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.

0 投票する
14 に答える
35140 参照

c++ - 可変引数リストを取るデバッグ専用関数を作成するにはどうすればよいですか? printf() のように

と同じパラメータでデバッグロギング機能を作りたいprintfです。ただし、最適化されたビルド中にプリプロセッサによって削除できるもの。

例えば:

可変引数マクロを見てきましたが、すべてのプラットフォームで利用できるわけではありません。gccそれらをサポートしますが、msvcしません。

0 投票する
31 に答える
745667 参照

c++ - #includeの違いは何ですかおよび#include"filename"?

includeCおよびC++プログラミング言語では、次のように、山かっこを使用することとステートメントで引用符を使用することの違いは何ですか?

  1. #include <filename>
  2. #include "filename"
0 投票する
5 に答える
1189 参照

objective-c - 「null 定義マクロ」とは何ですか?

Objective-C と Cocoa を学んでいます。私が取り組んでいるAppleのチュートリアルには、次のような補足説明があります。

IBOutletコンパイル時に C プリプロセッサによって削除される null 定義のマクロです。

興味があります - null 定義マクロとは何ですか?

0 投票する
13 に答える
9342 参照

c# - C# プリプロセッサ

C# 仕様にはプリプロセッサと基本的なディレクティブ (#define、#if など) が含まれていますが、言語には C/C++ などの言語に見られるような柔軟なプリプロセッサはありません。このような柔軟なプリプロセッサの欠如は、Anders Hejlsberg による設計上の決定であったと思います (ただし、残念ながら、これについての言及は現在見つかりません)。経験上、これは確かに良い決断でした。C/C++ をたくさん使っていた頃には、非常にひどい保守不可能なマクロが作成されていたからです。

とはいえ、もう少し柔軟なプリプロセッサが役立つと思われるシナリオはたくさんあります。次のようなコードは、いくつかの単純なプリプロセッサ ディレクティブによって改善される可能性があります。

このような非常に単純なケースを処理するプリプロセッサを作成するのは良い考えでしょうか? Steve McConnell はCode Complete (p208)で次のように書いています。

独自のプリプロセッサを作成 する 言語にプリプロセッサが含まれていない場合、プリプロセッサを作成するのはかなり簡単です...

私は引き裂かれています。このような柔軟なプリプロセッサを C# から除外することは、設計上の決定でした。ただし、私が非常に尊敬している著者は、状況によっては問題ないかもしれないと述べています。

C# プリプロセッサをビルドする必要がありますか? 私がやりたい簡単なことをするものはありますか?

0 投票する
4 に答える
275 参照

c - Cエディターで自動定義...なぜですか?

EclipseがC プロジェクトで新しいファイル ( .cまたは.h#defineファイル) を作成すると、エディターは常に次のようにファイルの先頭に を#define自動作成します。このようなファイルの

私は他の編集者もこれを行っているのを見てきました (Codewright と SlikEdit だと思います)。#defines問題なく削除できるので、エディターに対して何もしていないようで、それらを使用する理由が思いつきませ 。なぜそこにいるのか誰か知っていますか?

0 投票する
9 に答える
16363 参照

c++ - Visual C++ で可変引数リストを使用してマクロを作成する方法はありますか?

私の知る限り、gcc では次のように記述できます。

VC++でそれを行う方法はありますか?

0 投票する
11 に答える
106364 参照

c++ - 「ファイルの最後に改行がありません」コンパイラ警告

一部の C++ コンパイラで次の警告が表示される理由は何ですか?

ファイルの最後に改行がない

ソース/ヘッダー ファイルの末尾に空の行が必要なのはなぜですか?

0 投票する
4 に答える
245 参照

c# - 異なるバージョンの .NET に固有のセクションを含むコードをどのように記述すればよいですか?

私のソース コードは、.NET バージョン 1.1 と 2.0 の両方をサポートする必要があります。異なるバージョンをテストするにはどうすればよいですか?また、この状況に対処する最善の方法は何ですか?

コードの 2 つのセクションを別々のクラス、メソッドなどにインラインで配置する必要があるかどうか疑問に思っています。どう思いますか?

0 投票する
16 に答える
3911 参照

c++ - このマクロは関数に変換できますか?

コードをリファクタリングし、今では嫌うように教えられている #define をすべて取り除いているときに、構造内の要素の数を計算するために使用されるこの美しさに出くわしました。

そのままでも非常に便利ですが、インライン関数やテンプレートに変換できますか?

OK、ARRAYSIZE の方が適切な名前ですが、これはレガシー コード (どこから来たのかわかりません。少なくとも 15 年前のものです) であるため、「そのまま」貼り付けました。

0 投票する
38 に答える
96871 参照

c++ - C ++マクロはいつ有益ですか?

Cプリプロセッサは、C ++コミュニティによって正当に恐れられ、敬遠されています。インライン関数、定数、およびテンプレートは、通常、より安全で優れた代替手段#defineです。

次のマクロ:

型安全性よりも決して優れているわけではありません。

しかし、マクロにはその場所があります。プリプロセッサなしでは実行できないマクロの用途をリストしてください。

投票できるように、各ユースケースを別々の回答に入れてください。前処理者なしで回答の1つを達成する方法を知っている場合は、その回答のコメントでその方法を指摘してください。