[c/c++] Pobieranie danych o systemie

0

Witam

W jaki sposób można pobrać informacje na temat systemu operacyjnego na którym został uruchomiony dany program?

gdzieś widziałem takie instrukcje warunkowe jak

#ifdef WIN32
//mamy windows ;-)
#endif

ale nie mogę znaleźć informacji na temat tych zmiennych obsługujących poszczególne systemy. Mozecie mi pomóc

0

To nie instrukcje do wykrywania systemu w trakcie uruchomienia, a zwykle definicje warunkowe dla prekompilatora. Przydaje sie jak chcesz miec roznie skompilowany program dla roznych systemow. Czyli jak w na poczatku w kodzie dasz

#define WIN32

to w efekcie skompiluje sie to co jest pozniej w bloku ifdef, itp.

Jako, ze c/c++ kompilowane sa do kodu maszynowego to kompiluje sie osobno dla roznych systemow (istotnie roznych, czyli inny plik wynikowy dla win, linuksa, maca, itp). Stad to wykrywanie mija sie z celem. Natomiast samo wykrywanie wersji systemu (wersja jadra Linuksa, wersja windowsa) zalezy od samego systemu.

0

Dokładnie, za pomocą ifdef innymi słowy wykrywasz w jakim systemie następuje kompilacja. I ma to sens tylko dla niektórych kompilatorów - np w Visual Studio zawsze wiesz, że siedzisz pod Windows ;)

Generalnie za pomocą ifdefów da się wykrywać typ kompilatora, system, jakieś inne opcje różnorakie:
W GCC: http://gcc.gnu.org/onlinedocs/cpp/Predefined-Macros.html
W Visual studio: http://msdn.microsoft.com/en-us/library/b0084kay(VS.80).aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1