My 2 cents of insight
H C/C++ είναι 100% portable ( γιαυτό δημιουργήθηκε ) κάποια warnings που μπορούν να πετάγονται σε κάποιον compiler και όχι σε άλλον συνήθως από το συντακτικό της κάθε γλώσσας καθορίζονται αρκετά strictly οπότε ως προς αυτό είναι οκ
Το MinGW είναι μια χαρά ( προσωπικά αυτό χρησιμοποιώ και δεν είχα ποτέ πρόβλημα , ακόμα και για αρκετά περίεργα πράματα που έχω δοκιμάσει :P ) , τώρα λόγω οτι το mingw κάνει link στατικά πολύ περισσότερες βιβλιοθήκες σε ένα exe για λόγους "πολιτικής" και portability χωρίς τις extra βιβλιοθήκες του είναι καλύτερος ο compiler της microsoft (στην πλατφόρμα της microsoft) παρότι τα binaries δεν έχουν κάποια μεγάλη διαφορά ..
Αλλά το οτι χρειάζεσαι VisualStudio κτλ είναι show stopper .. :P
Αν κάποιος θέλει κάποια crossplatform syscalls μπορεί είτε να χρησιμοποιήσει κάποιο crossplatform ( και άρα native σε κάθε πλατφόρμα ) framework ( i.e. WxWidgets ) , αλλιώς μπορεί πολύ εύκολα για ένα δικό του wrapper ( παράδειγμα int countFilesInDir(char * dirname) να έχει pre-compiler directives για Unix/Windows έτσι ώστε με το ίδιο block κώδικα να κάνει compile σε διαφορετικά platforms με το ίδιο αποτέλεσμα..
Επίσης το τελευταίο είναι στην πραγματικότητα πολύ πιο εύκολο από όσο φαντάζεται κάποιος στην αρχή!
Επίσης μπορείς να κατεβάσεις MinGW και απο linux να βάλεις στα make files του project σου να πετάει και το windows exe ταυτόχρονα με το linux one οπότε να είσαι πολύ μάγκας

Επίσης σε IDE όπως το Code::Blocks μπορείς να βάλεις profiles στο ίδιο project για όσους compilers θές , πχ Windows Release , Linux Release , Mac Release , Windows Debug κτλ και να κάνεις και απο εκεί σχετικά εύκολα αυτή την δουλειά!