Czy preprocesor C może być użyty do określenia, czy plik istnieje?

Mam bardzo dużą bazę kodową (czytaj: tysiące modułów), która ma kod współdzielony przez wiele projektów, które działają na różnych systemach operacyjnych z różnymi kompilatorami C ++. Nie trzeba dodawać, że utrzymanie procesu kompilacji może być bardzo uciążliwe.

W bazie kodu znajduje się kilka miejsc, w których kod zostałby wyczyszczony zasadniczo, gdyby tylko istniał sposób, aby preprocesor zignorował pewne#includes jeśli plik nie istniał w bieżącym folderze. Czy ktoś wie, jak to osiągnąć?

Obecnie używamy#ifdef wokół#include w udostępnionym pliku, z drugim plikiem specyficznym dla projektu, który # definiuje, czy#include istnieje w projekcie. To działa, ale jest brzydkie. Ludzie często zapominają o prawidłowym aktualizowaniu definicji podczas dodawania lub usuwania plików z projektu. Zastanawiałem się nad napisaniem narzędzia do kompilacji, aby zachować aktualność tego pliku, ale jeśli istnieje sposób niezależny od platformy, aby to zrobić z preprocesorem, wolałbym to zrobić w ten sposób. Jakieś pomysły?

questionAnswers(9)

yourAnswerToTheQuestion