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?