20-24 September 2021
US/Pacific timezone

Eliminating implicit function declarations

23 Sep 2021, 07:00
30m
GNU Tools track/Virtual-Room (LPC Virtual)

GNU Tools track/Virtual-Room

LPC Virtual

150
GNU Tools Track GNU Tools Track

Speaker

Florian Weimer (Red Hat)

Description

The 1999 revision of ISO C removed implicit function declarations from the language. Instead, all functions must be declared (with or without a prototype) before they can be called. In previous language versions, a function f was implicitly declared as extern int f (); if the identifier f was used in a call expression (such as f (1, 2, 3.0)).

When GCC switched the default to C99 mode, it was impossible to disable implicit function declarations by default because too many autoconf checks (and similar compile-time inspection) failed, which often resulted in successful compilation (and testing) of programs without the intended feature set.

Over the years, not much progress has been made on this issue. For example, a GCC configure test was only fixed in 2019. Recently, Apple Xcode enabled -Werror=implicit-function-declaration by default, but apparently without fixing resulting problems across free software upstreams.

This session intends to explore whether it is time to make a concerted effort at this problem, and how to approach it.

Intended format: short prepared presentation (10 minutes), followed by discussion.

I agree to abide by the anti-harassment policy I agree

Primary author

Florian Weimer (Red Hat)

Presentation Materials