# Composite type fields names from C code

**URL:** <https://discourse.julialang.org/t/composite-type-fields-names-from-c-code/128919>\
**Category:** General Usage\
**Tags:** question, embedding\
**Created:** [May 12, 2025, 10:16am UTC](https://discourse.julialang.org/t/composite-type-fields-names-from-c-code/128919 "2025-05-12T10:16:23Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![alexkolzov](https://avatars.discourse-cdn.com/v4/letter/a/8dc957/32.png) [@alexkolzov](https://discourse.julialang.org/u/alexkolzov)\
**Post date:** [May 12, 2025, 10:16am UTC](https://discourse.julialang.org/t/composite-type-fields-names-from-c-code/128919/1 "2025-05-12T10:16:23Z")

</div>

Hello everyone!  
I am trying to get the name of composite type fields in version 1.11.  
A long time ago I did it like this:

```julia
int nfields = jl_datatype_nfields(jtype);
fields.resize(nfields);
for (int i = 0; i < nfields; i++) {
   jl_symbol_name(jl_field_name(jtype,i));
}

```

But now in julia.h there is no function _jl\_field\_name_. I try to use _jl\_field\_names_

```julia
jl_svec_t *vn = jl_field_names(jtype);
for (int i = 0; i < nfields; i++) {
        jl_value_t* name = jl_svecref(vn, i);
        const char *c = jl_string_ptr(name);
}

```

but I get nonsense instead of names. What is the correct path in current versions?

---

<div class="post-metadata">

**Author:** ![sgaure](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sgaure/32/14779_2.png) [@sgaure](https://discourse.julialang.org/u/sgaure)\
**Post date:** [May 12, 2025, 10:34am UTC](https://discourse.julialang.org/t/composite-type-fields-names-from-c-code/128919/2 "2025-05-12T10:34:45Z")

</div>

There is an example of string conversion of a field name here. It’s `jl_symbol_name` instead of `jl_string_ptr`.

> <https://github.com/JuliaLang/julia/blob/master/src/builtins.c#L1013-L1014>

---

<div class="post-metadata">

**Author:** ![alexkolzov](https://avatars.discourse-cdn.com/v4/letter/a/8dc957/32.png) [@alexkolzov](https://discourse.julialang.org/u/alexkolzov)\
**Post date:** [May 12, 2025, 11:12am UTC](https://discourse.julialang.org/t/composite-type-fields-names-from-c-code/128919/3 "2025-05-12T11:12:04Z")

</div>

Right way:

```julia
jl_svec_t *field_names = jl_field_names(jtype);
for (int i = 0; i < nfields; i++) {
        jl_sym_t* name = (jl_sym_t*)jl_svecref(field_names, i);
        const char *c = jl_symbol_name(name);

```
