私はこの次のコードを動作させることを夢中に試みてきました。プリプロセッサの定義のWiDrとLIDRが働いていないと、それは私にコンパイルエラーを与えている:私は本当にプリプロセッサマクロ、または一般にプリプロセッサの経験を持っているので、私に簡単に行かないCで動作しないプリプロセッサの定義
projects/elcain.c: In function ‘main’:
projects/elcain.c:17:6: error: ‘WIDR’ undeclared (first use in this function)
if (WIDR) {
^
projects/elcain.c:17:6: note: each undeclared identifier is reported only once for each function it appears in
projects/elcain.c:19:13: error: ‘LIDR’ undeclared (first use in this function)
} else if (LIDR) {
。ここで
は、コードは次のとおりです。あなたが探しているものを
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef _WIN32
#define WIDR 1
#elif defined _linux_
#define LIDR 1
#endif
int main() {
char* directory = (char*) malloc (1);
if (WIDR) {
strcpy(directory, "C:\\TEMP\\");
} else if (LIDR) {
strcpy(directory, "~/.temp/");
} else {
*directory = 0x00;
}
printf("%s\n", directory);
return 0;
}
'_WIN32'も' _linux_'どちらが定義されて消えます。 – tkausl
'_WIN32'が定義されていない場合、' WIDR'も定義されていません。 Anywa、これは完全に間違っています。なぜなら、 'WIRD'と' LIDR'は両方とも定義できないからです。 –
BTW '(char *)malloc(1);'は不条理です。それについて考える。 –