gpt4 book ai didi

c - 为什么这个使用 "crypt"的源代码有这个编译器警告 :

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:24 25 4
gpt4 key购买 nike

#include <stdio.h>
#define _XOPEN_SOURCE
#include <unistd.h>

int main()
{
const char *key = NULL;
const char *salt = NULL;
crypt(key, salt);
return 0;
}

使用 gcc test.c -o test -Wall -lcrypt 编译。

它给出了这个警告:

initialization makes pointer from integer without a cast

谁能解释这个警告以及如何正确避免它?

最佳答案

您必须在所有 包含之前放置功能测试宏。在您的情况下,stdio.h 已经在幕后包含了 features.h,它负责将功能定义(如 _XOPEN_SOURCE)转换为标题使用的内部内容。因此,当您包含 unistd.h 时,标志已经设置并且不会被再次解释,因此,同时声明 _XOPEN_SOURCE 不会有任何效果.

更改顺序可以解决问题:

#define _XOPEN_SOURCE
#include <stdio.h>
#include <unistd.h>

int main()
{
const char *key = NULL;
const char *salt = NULL;
crypt(key, salt);
return 0;
}

关于c - 为什么这个使用 "crypt"的源代码有这个编译器警告 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25324596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com