数値をCのキーワード型にマップしようとしています。数値に型をマッピングする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 \
#elif Y == INT_TYPE \
int \
#else \
int \
#endif \
int main(int argc, char* argv[]) {
unsigned int type = 1;
OBJECT_TYPE(type) value = 0.5f;
printf("%f\n", value);
return 0;
}
test.c:11:3: error: missing binary operator before token "double"
double \
私は、整数コードによって知られている特定のタイプにvoid*
をキャストすることができるようにしたいです。
C **前**プロセッサがデータ型の概念がありません。ディレクティブをネストすることはできません。そしてCは静的に型付けされています。あなたが試したことは意味をなさない。それはXY問題です。あなたは何を解決したいですか? – Olaf
プリプロセッサはコンパイル時のもので、実際のコンパイルが行われる前に別のフェーズで実行されます。プリプロセッサはそれ自身の別の言語を使用し、C変数の概念を持たない。 –
さらに、 'default'型のようなものはありません。 –