c-preprocessor

    0

    1答えて

    現在、外部ライブラリを扱いやすいようにヘッダを書いています。ここで は、最小限のコードは次のとおりです。 #pragma once #define STR_HELPER(x) #x #define STR(x) STR_HELPER(x) #define EXTERNAL_PATH STR(C:/C++ Libraries/) #define LUA_PATH EXTERNAL_P

    0

    2答えて

    32ビットレジスタ、すなわちstatus_regは1フィールド(field_1 < 0:31>)です。このレジスタを設定してクリアするには、このレジスタのマスク値を取得しようとしています。それほど一般式であるマスク値を取得する:このhbitで mask = ((~(~0 << (hbit-lbit+1))) << lbit) 高い位置ビットすなわち31とlbitが下位置ビットi.e.0です。

    -1

    1答えて

    数値をCのキーワード型にマップしようとしています。 #include <stdio.h> #include <stdlib.h> #include "memory.h" #define DOUBLE_TYPE 1 #define INT_TYPE 2 #define OBJECT_TYPE(Y) #if Y == DOUBLE_TYPE \ double

    1

    1答えて

    私は最近gnuコンパイラを4.8.4(Ubuntu 14.04)から5.4(Ubuntu 16.04)にアップグレードしましたが、現在は使用していないパッケージがコンパイルされなくなりました。これはgnu 4.8.4でうまく動作します。 まず、コンパイルは私のメイクファイルに次の行で止まる: cpp -std=c89 -C $(FLAGS) $(PARSER_INC) $(COMMON)/stru

    0

    1答えて

    私は以下の関数foo()とマクロFOO(str)を持っています。 void foo(const char *fmt, ...) { va_list args; va_start(args,fmt); vsprintf(msgbuff,fmt,args); va_end(args); printf("%s\n",msgbuff); } #def

    0

    2答えて

    私たちのテスト環境では、本番環境の特定のハードウェア部分を完全にシミュレートすることができないため、アプリケーションをテストする際にいくつかのコードを除外する必要があります。 私はので、私は#DEFINE testing_envを含める場合、これはうまく動作しますが、このように私は手動でこれは私が環境を切り替えるたびに定義するコメント解除/コメントする必要は #IFNDEF testing_env

    1

    1答えて

    私は大部分のC言語で書かれた大きなコードベースをいくつかの列挙型で持っています。最近、私は列挙型のうちの1つを修正しましたが、それは多少の影響を「誤って」予測したため、大きな影響をもたらしました。 typedef enum en_e_type { ENUM_VAL_1 = 1, ENUM_VAL_2 = 2, ENUM_VAL_3 = 3, ENUM_VAL_MAX = 4, }en_

    1

    1答えて

    CMakeを使用してCプリプロセッサ定義の値を取得するには完全にハック的な方法はありますか?たとえば、正確なMSVCのバージョンを取得するために、このような操作が必要な場合があります。 if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") get_preprocessor_value("_MSC_FULL_VER" msvc_version) i