c-preprocessor

    2

    2答えて

    ここでは、私がやろうとしているものの単純すぎるバージョンです: #define LOGDIRECTORY C:\\logs\\ system("mkdir LOGDIRECTORY"); しかし、プリプロセッサは、定義された名前を交換するのではなく、代わりに、システムコマンドは実際にはLOGDIRECTORYが名前だと考えるので、プログラムを起動するときにエラーが表示されます。 私は間違って

    0

    3答えて

    標準Cプリプロセッサの優れたC++実装を知っている人はいますか?私はC++ Cコードを解析する必要のプロジェクトに取り組んでいる、と私は、マクロなどをサポートしたいけどCプリプロセッサ自分の実装に興味がないと思います 。 理想的には、プリプロセッサは主Cファイルのファイル名に取る、及び前処理Cコードのストリームを返します。 これが失敗すると、Cの前処理をカバーする簡潔で包括的なリファレンスを誰にで

    1

    2答えて

    免責事項:私はプログラマではありません。 私は最近友人のプロジェクトを見ました。私が理解できない理由のために、彼は実行時にコンパイルされた文字列にコードを書きます。このようなものになり:Visual Studioがでステップと一部のプリプロセッサの虐待を使用するなど 構文強調表示を行いませんので、使用して恐ろしいです char x[] = "int y = 5; printf(\"%i\", y)

    13

    2答えて

    プリプロセッサの動作の精神モデルが明らかに不完全で、これが私を狂わせてしまっています。 2つのトークンを連結したいが、2番目のトークンを最初に展開する必要があります。ここで #define ANSWER 42 #define FOO foo_ ## ANSWER 、FOOはfoo_ANSWERに展開、私はそれがfoo_42になりたいです。だから私は、これは何とか連結前に引数を拡大することを

    1

    2答えて

    私はマクロでこの試みに問題があります。存在しないパラメータで#pragmaを交換しようとしているので、 #define ISR(x) #pragma isr=x がコンパイルされません。私がやろうとしていることを達成する方法はありますか? ISR(VEC1)を#pragma isr=VEC1に展開したいと思います。

    9

    4答えて

    : #include <iostream> #define FOO std::cout << __LINE__ << ' ' \ << __LINE__ << '\n'; int main() { FOO std::cout << __LINE__ << ' ' \ << __LINE__ << '\n'; } は、第1の出力

    3

    3答えて

    自分のコードにリソースを使用するドライバがいくつかありますが、そのうちの1つしか定義できません。 たとえば、次の定義がある場合:USB_HID、USB_SERIAL、USB_STORAGE。 と私は1つだけが定義されていることをテストしたい、これを行う簡単な方法はありますか? 現在、私はそれをこのようにやっている:各USB_XXXドライバのためのこれらのブロックの1と #ifdef USB_HID

    7

    5答えて

    #define SQRT(x) (sizeof(x) == sizeof(float) ? sqrtf((x)) : \ sizeof(x) == sizeof(double) ? sqrt((x)) : \ sqrtl((x))) #define SQRT(x) (sizeof(x) == sizeof(float) ? sqrtf((x)) : \

    0

    2答えて

    #defineを使用してポインタを作成できますか?このような 何か: #define *HEY 私はこのような何かのためにそれを使用します: #define *HEY 2 ... int *s=HEY;

    2

    2答えて

    ここに私のシナリオがあります:変更したくないソースファイルがありますが、一部の文字列リテラルを他の値に置き換えたいと思っています。ここに例があります: #define "oldString" "newString"