写了一个很简单的函数

void* get_pub_socket(void* ctx, char* pub_addr) {
    void* gen_pub_socket = zmq_socket(ctx, ZMQ_PUB);
    if (gen_pub_socket) {
        zmq_bind(gen_pub_socket, pub_addr);
        return gen_pub_socket;
    }
    return NULL;
}

运行时候总是段错误,gdb跟了一下发现指针返回之后就没有访问权限了,在里面打印一下发现返回之后指针长度变短了,又是经典的在没有声明时候默认被变成int型了,在头文件中添加上声明 ,并包进这个头函数就好了,看样子还是要打开告警当错误了,在cmake中打开可以使用

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")

o_ra
6 声望4 粉丝

记录工作中碰到的问题