1. ホーム
  2. c

[解決済み] 関数 'strlen' の暗黙の宣言」の警告を受ける。

2022-02-05 10:37:35

質問

簡単なコードを書いているのですが、警告が表示されます。

-bash-3.2$ gcc -Wall print_process_environ.c -o p_p
print_process_environ.c: In function 'print_process_environ':
print_process_environ.c:24: warning: implicit declaration of function 'strlen'
print_process_environ.c:24: warning: incompatible implicit declaration of built-in function 'strlen'

以下は、そのコードです。

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <strings.h>

    void
    print_process_environ(pid_t pid)
    {
        int     fd;
        char    filename[24];
        char    environ[1024];
        size_t  length;
        char    *next_var;

        snprintf(filename, sizeof(filename), "/proc/%d/environ", (int)pid);
        printf("length of filename: %d\n", strlen(filename));

        fd = open(filename, O_RDONLY);
......

の定義は strlen()

   #include <string.h>

   size_t strlen(const char *s);

この警告を消す方法。

解決方法は?

それは #include <string.h> . あなたのコードではスペルが間違っているのです。また、コンパイラで警告が出た場合は、常に man function_name ターミナルでその関数に必要なヘッダーを見ることができます。

 #include <string.h> // correct header
 #include <strings.h> // incorrect header - change this in your code to string.h