[Python-Dev] C99
Dino Viehland
dinov at microsoft.com
Sat Jun 4 14:32:30 EDT 2016
Martin wrote:
> On 4 June 2016 at 06:11, Benjamin Peterson <benjamin at python.org> wrote:
> > PEP 7 requires CPython to use C code conforming to the venerable C89
> > standard. Traditionally, we've been stuck with C89 due to poor C
> > support in MSVC. However, MSVC 2013 and 2015 implement the key
> features of C99.
> > C99 does not offer anything earth-shattering; here are the features I
> > think we'd find most interesting:
> > - Variable declarations can be on any line: removes possibly the most
> > annoying limitation of C89.
> > - Inline functions: We can make Py_DECREF and Py_INCREF inline
> > functions rather than unpleasant macros.
> > - C++-style line comments: Not an killer feature but commonly used.
> > - Booleans
>
> My most-missed C99 feature would be designated initializers. Does MSVC
> support them? It might allow you to do away with those giant pasted slot
> tables, and just write the slots you need:
>
> PyTypeObject PyUnicodeIter_Type = {
> PyVarObject_HEAD_INIT(&PyType_Type, 0)
> .tp_name = "str_iterator",
> .tp_basicsize = sizeof(unicodeiterobject),
> .tp_dealloc = unicodeiter_dealloc,
> .tp_getattro = PyObject_GenericGetAttr,
> .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
> .tp_traverse = unicodeiter_traverse,
> .tp_iter = PyObject_SelfIter,
> .tp_iternext = unicodeiter_next,
> .tp_methods = unicodeiter_methods,
> };
I checked and VC++ does actually support this, and it looks like they support
// comments as well. I don't think it fully supports all of the C99 features - it appears
They just cherry picked some stuff. The C99 standard library does appear to be fully
supported with the exception of tgmath.h.
More information about the Python-Dev
mailing list