c - 赋值从指针生成整数而没有强制转换警告

标签 c pointers casting variable-assignment

谁能解释为什么下面的代码会发出下面的警告以及如何补救?

warning: assignment makes integer from pointer without a cast [enabled by default]

代码如下:

int tcp_socket(void)
{
    int s;

    if ((s = socket(PF_INET, SOCK_STREAM, 0)) == -1) {
        _logf(LOG_DEBUG, "LOG %s:%d (%s) - %s", __FILE__, __LINE__, __func__, "Error creating socket");
        return -1;
    }
    return s;       
}

int main(int argc, char **argv)
{
    int socket;
    socket = tcp_socket;
    if(socket == -1) {
        _logf(LOG_INFO, "LOG %s:%d (%s) - %s", __FILE__, __LINE__, __func__, "Error creating socket, exiting...");
        exit(-1);
    } 
}

最佳答案

更正这个:

socket = tcp_socket;

socket = tcp_socket();

tcp_socket()是一个函数调用,而tcp_socket是一个指向内存中函数位置的指针。

关于c - 赋值从指针生成整数而没有强制转换警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18718486/

相关文章:

点对点聊天中程序的多个实例之间的通信 - C 语言

合作工具组 : coding in C

C - 按迭代位置将两个数组合并为一个

c++ - 使用引用而不是指针有哪些缺点?

c++ - 你不能用双指针引用二维数组吗?

c++ - 使已删除的指针无效?

c++ - 类类型的转换运算符?

go - Go中的单例实现

casting - 在 YouTube 上获取 Cast 按钮以获得自定义转换解决方案

c - 为什么 "do ... while (0)"不能用简单的大括号代替?