Kompiluję mój program, który będzie działał na Linuksie gcc 4.4.1 C99.Różnica między #if zdefiniowanymi (WIN32) i #ifdef (WIN32)
Właśnie wprowadziłem moje #defines w celu oddzielenia kodu, który będzie skompilowany na obu systemach Windows lub Linux. Jednak mam ten błąd.
error: macro names must be identifiers.
Za pomocą tego kodu
#ifdef(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif
Jednak, kiedy zmienił się ten błąd został ustalony:
#if defined(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif
Właśnie się zastanawiałem, dlaczego mam tego błędu i dlaczego #defines są różne?
Dziękujemy,
tak, ale możesz również kaskadować #ifdef UNIX z #ifndef WIN32 i uzyskać tę samą elastyczność (nie tak czytelną, zgadzam się) – jpinto3912
@ jpinto3912 Ale to staje się jeszcze bardziej owłosione z '||' – Aidiakapi
Gdyby tylko mieli odszedł z '#if defined (NAME)' od początku i uniknął tworzenia instrukcji '# ifdef'. – Andy