Skip to content

How to solve the implicitly declaring library function warning in C

New Course Coming Soon:

Get Really Good at Git

Learn how to solve the implicitly declaring library function warning in C

When compiling a C program you might find that the compiler gives you a warning similar to

hello.c:6:3: warning: implicitly declaring library function
      'printf' with type 'int (const char *, ...)'
      [-Wimplicit-function-declaration]
  printf("Name length: %u", length);
  ^

or

hello.c:5:16: warning: implicitly declaring library function
      'strlen' with type 'unsigned long (const char *)'
      [-Wimplicit-function-declaration]
  int length = strlen(name);
               ^

This problem occurs because you used a function from the standard library without first including the appropriate header file.

The compiler will also give you a suggestion, like the following one:

hello.c:5:16: note: include the header <string.h> or
      explicitly provide a declaration for 'strlen'

which points you in the right direction.

In this case, adding

#include <stdio.h>

at the top of the C file will solve the issue.

Are you intimidated by Git? Can’t figure out merge vs rebase? Are you afraid of screwing up something any time you have to do something in Git? Do you rely on ChatGPT or random people’s answer on StackOverflow to fix your problems? Your coworkers are tired of explaining Git to you all the time? Git is something we all need to use, but few of us really master it. I created this course to improve your Git (and GitHub) knowledge at a radical level. A course that helps you feel less frustrated with Git. Launching Summer 2024. Join the waiting list!
→ Get my C Handbook

Here is how can I help you: