簡體   English   中英

C:函數“ vsyslog”的隱式聲明

[英]C: Implicit declaration of function ‘vsyslog’

我正在嘗試為我的pam模塊實現sys logger。 我的代碼如下:

#define __USE_BSD
#include <syslog.h>
#include <stdarg.h>

#include <string.h>

static void _log(int level, const char *format, ...) {
    va_list args;
    va_start(args, format);
    openlog("my_app", LOG_CONS|LOG_PID|LOG_PERROR, LOG_AUTH);
    vsyslog(level, format, args);
    va_end(args);
    closelog();
}

PAM_EXTERN int pam_sm_authenticate( pam_handle_t *pamh,
    int flags,int argc, const char **argv ) {

    /* Something... */

    _log(LOG_INFO, "username check");
    if (strcmp(username, "jdoe") != 0) {
        _log(LOG_ERR, "Auth error");
        return PAM_IGNORE;
    }

    /* Something else... *

}

但是,當我編譯時,Eclipse CDT向我返回警告:

../src/mypam.c:33:5: warning: implicit declaration of function ‘vsyslog’ [-Wimplicit-function-declaration]

我該如何解決? 請注意,我將CentOS 7用作開發機。

通過定義__USE_BSD_BSD_SOURCE ,如下所示:

#define __USE_BSD
#define _BSD_SOURCE
#include <syslog.h>
#include <stdarg.h>

// ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM