10.01.21 09:53, junyixie пише: > #ifndef Py_LIMITED_API > # define Py_CPYTHON_FILEOBJECT_H > # include "cpython/fileobject.h" > # undef Py_CPYTHON_FILEOBJECT_H > #endif > > cpython/fileobject.h > ``` > #ifndef Py_CPYTHON_FILEOBJECT_H > # error "this header file must not be included directly" > #endif > ``` > > why not use #ifndef #define > cpython/fileobject.h > #ifndef Py_CPYTHON_FILEOBJECT_H > #define Py_CPYTHON_FILEOBJECT_H > .... > #endif /* Py_CPYTHON_FILEOBJECT_H */
Because it will not produce compile-time error when you include that header files directly. The division of these declarations on few files is a deep implementation detail. Header file "cpython/fileobject.h" is not a part of API and we do not want users to use them directly and then fail because in next feature (or even bugfix) release some declarations have been moved to other files. _______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/UCKJUHCR4JLSPJKKQBKSUSRTNDBNARVI/ Code of Conduct: http://python.org/psf/codeofconduct/