Re: gcc

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

 



On Mon, Jul 07, 2025 at 02:37:44PM +0200, Patrick Dupre via users wrote:
> Hello,
> 
> I am trying to generate a rpm package (perl-Tk-Zinc) from a source file.
> No problem in fedora 40, but it fails in fedora 42
> The reason seems to be due to gcc:  gcc 14 in fedora 40, and gcc 15 in fedora 15
>  
> Th error message is 
> Field.c:1746:8: error: too many arguments to function ‘cb’; expected 0, have 9
>  1746 |       (*cb)(wi, fptr, &bbox, &pm_bbox,
>       |       ~^~~~ ~~
> Field.c: In function ‘RenderField’:
> 
> 
> It is due to 
> static void
> FieldsEngine(ZnFieldSet field_set,
>              void       (*cb)())
> {
>   ZnWInfo       *wi = field_set->item->wi;
>   /*int         i;      This one *NEED* to be an int */
>   unsigned int  i, num_fields, num_chars;
>   Field         fptr;
>   ZnTextInfo    *ti = &wi->text_info;
>   ZnBBox        lclip_bbox, fclip_bbox, bbox, *global_clip_box;
>   ZnBBox        tmp_bbox, text_bbox, pm_bbox;
>   ZnPoint       pts[2];
>   ZnTriStrip    tristrip;
>   ZnPoint       text_pos;
>   ZnBool        restore = False;
>   ZnDim         lwidth, lheight;
>   ZnReal        val;
>   int           cursor;
>   int           sel_start, sel_stop;
> 
>   if (!field_set->num_fields) {
>     return;
>   }
> 
> with the call
> 
>       (*cb)(wi, fptr, &bbox, &pm_bbox,
>             &text_pos, &text_bbox, cursor, sel_start, sel_stop);

That is invalid C23, and GCC 15 defaults to -std=gnu23.
In C17 and earlier, type fn (); meant a function with type return type
and unspecified arguments, in C23 this means the same as in C++,
function with no arguments, same as type fn (void);
If cb is only used for functions with 9 arguments with compatible types,
then fix it by changing void (*cb)() to
void (*cb)(ZnWinfo *, Field, ZnBBox *, ZnBBox *, ZnPoint *, ZnBBox *, int, int, int)
If it is used for functions with different argument types and their count,
then you need to rework the code.  Perhaps it could use ... functions (but
note that all the functions passed to it have to be then declared and
defined with ...), or pass union of several different function pointers,
whatever.

Or temporarily use -std=gnu17.

See also https://gcc.gnu.org/gcc-15/porting_to.html#c23

	Jakub

-- 
_______________________________________________
users mailing list -- users@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to users-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/users@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue



[Index of Archives]     [Older Fedora Users]     [Fedora Announce]     [Fedora Package Announce]     [EPEL Announce]     [EPEL Devel]     [Fedora Magazine]     [Fedora Summer Coding]     [Fedora Laptop]     [Fedora Cloud]     [Fedora Advisory Board]     [Fedora Education]     [Fedora Security]     [Fedora Scitech]     [Fedora Robotics]     [Fedora Infrastructure]     [Fedora Websites]     [Anaconda Devel]     [Fedora Devel Java]     [Fedora Desktop]     [Fedora Fonts]     [Fedora Marketing]     [Fedora Management Tools]     [Fedora Mentors]     [Fedora Package Review]     [Fedora R Devel]     [Fedora PHP Devel]     [Kickstart]     [Fedora Music]     [Fedora Packaging]     [Fedora SELinux]     [Fedora Legal]     [Fedora Kernel]     [Fedora OCaml]     [Coolkey]     [Virtualization Tools]     [ET Management Tools]     [Yum Users]     [Yosemite News]     [Gnome Users]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [Fedora Sparc]     [Libvirt Users]     [Fedora ARM]

  Powered by Linux