Re: Can we get C/C++ struct's member number, type, name, and format string?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 01/18/2017 07:19 PM, hank fu wrote:
Can we get C/C++ struct's member number, type, name, and format string?

Here is one example.
struct c_test_struct_type {
int i_var;
unsigned int ui_var;
long l_var;
unsigned long ul_var;
}
Is there one an operator provided by GCC to determine the member
nubmer of this struct? For example, I hope to get 4 by calling
'__struct_member_number__(struct c_test_struct_type)' .
Is there one an operator provided by GCC to get the member name of
this struct? For example, I hope to get string 'i_var' by calling
'__struct_member_name__(struct c_test_struct_type, 0)'.
Is there one an operator provided by GCC to get the member type of
this struct? For example, I hope to get string 'int' by calling
'__struct_member_type__(struct c_test_struct_type, 0)'.
Is there one an operator provided by GCC to get the formatted string
of this struct? For example, I hope to get string "i_var: %d, ui_var:
%u, l_var: %ld, llvar: %lld" by calling
'__struct_member_print_format__(struct c_test_struct_type, 0)'.

It's certainly possible to determine the basic type of a member, in
C++ by using templates and in C via _Generic.  From type it's then
straightforward to determine the printf format string.

As Jonathan said, there is mechanism to obtain its name or positional
number, though it should be relatively easy project to implement a pair
of GCC built-in functions to obtain these.

Martin




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux