c-preprocessor

    1

    1答えて

    私はいくつかのプラグインを持つC++/Qtプログラムを開発中です。クラスごと 私はこのようになりますプラグインインタフェースを定義する必要がありますので、 #define MY_PLUGIN_BASE(__c_name,__appendix) \ class __c_name##__appendix : public QObject, myPlug { \

    4

    2答えて

    大学の私の先生の一人が、マクロを使用してc99コードの繰り返しを減らすことを提案しています。それは彼の元雇用主のアンチパターンと見られていた(しかし、彼は知っていないと主張し、産業の背景を持つもう一つの家庭教師は、その使用を阻止 for_ij { /*do stuff*/; } for_i { /*do stuff*/; } 、このように使用することができます #define foreach

    3

    1答えて

    トークンペーストを使用して、Cで単純な汎用構造体を定義しようとしています。例は以下である: - 私の理解トークンペーストが原因PARAMATERSの埋め込みにライン2及び5に必要であり、反対の理由ライン4上の必要はないに #define VECTOR(type, dimension, name) \ typedef struct Vector_##type{ \ type d

    2

    1答えて

    なぜこれが動作しないのですか(それはアサートに失敗しています...実行したくないのですが)? #define OS_MACOSX 0 #if defined(OS_MACOSX) fructose_assert(1==2); #endif

    4

    1答えて

    私は、クロスプラットフォーム開発を容易にするための条件付きの定義が相当量あるプロジェクトを持っています。しかし、私はDoxygenがすべての定義を抽出することを納得させる問題を抱えています。 たとえば、次のスニペットでは、DoxygenはTARGET_X86_64を示しますが、TARGET_ARM64は示していません。 #if defined(_M_ARM64) || defined(__arm6

    1

    1答えて

    ソースコード内の単語をプリプロセッサマクロの展開に連結しようとしています。基本的に私はコードのどこかにfooを持っており、#define EXPANSION barでfoobarを取得したいと思っています。しかし、私はこれを行う方法を見つけるのに苦労しています。これはすべてのコンパイラで動作します。現時点では、gfortranとifortで動作するなら、私は満足しています。 そのdocumenta

    2

    2答えて

    __DATE__または__TIME__をヘッダファイルに使用する場合、そのヘッダ組み込み用のプリプロセッサの結果は多少異なる場合があります。 ヘッダーファイル内で__DATE__または__TIME__を使用すると、1つの定義ルールに違反することがありますか? フォローアップ:assertヘッダーがone-definition-ruleに違反していますか?

    -5

    2答えて

    #include <stdio.h> #define STR /*~~Complete this line~~*/ /* such that the output of the code is M = 10 N = 5 */ #define N 5 #define M 10 int main() { printf(STR(M)); printf("\n"); pri

    2

    1答えて

    は、次のコードを考えてみましょう。この場合 #if 0 #foobar #endif を、プリプロセッサは、#foobarが有効なプリプロセッサディレクティブではないことを文句はありません。 #if 0のためにブロックをスキップするだけで、コードは正常にコンパイルされます。 今すぐ次のコードを考えてみます。 #if 0 #if 1 #endif この場合は、プリプロ

    0

    1答えて

    #defineが見えないためコンパイルに失敗してしまうという問題が発生しました。何が問題なのかを確認する最も簡単な方法は、特定のC++ファイルのヘッダーファイルが含まれている正確な順序を簡単に確認できるかどうかです。特に奇妙なのは、コードがXCode 7.2.1で正常にコンパイルされ、XCode 7.3で失敗するということです。 ソースファイルでCプリプロセッサを呼び出す方法はありますか?それはお