In example A _NAME_A is called as tag_name and NAME_A is called as type_name. As we have used typedef, we can only create variable using tag_name so
NAME_A var_a2 will give an error
else all are correct
Note: After struct whichever name comes first that will be called as tag_name.
So NAME_c var_c is also correct