小编Mat*_*nti的帖子

Socket C++程序在运行时成功编译崩溃

我几个小时都在苦苦挣扎,但我无法找出我做错了什么.这是一个非常简单的程序,应该将一个简单的UDP数据包发送到给定端口上的给定IP.g ++编译这个程序时没有任何错误或警告,但是当我运行它时......!它就死了.在stdout上它打印:0(这应该意味着绑定正常工作)和"尝试发送".然后什么都没有.它根本不打印"HERE I AM".没有错误,没有消息,没有.有人有任何暗示吗?这是代码:

#include <iostream>
#include <string.h>
#include <time.h>
#include <stdio.h>

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include <unistd.h>
#include <netdb.h>
#include <ifaddrs.h>

using namespace std;

int main()
{
    struct sockaddr_in local_addr;
    local_addr.sin_family=AF_INET;
    local_addr.sin_port=0;
    local_addr.sin_addr.s_addr=htonl(INADDR_ANY);
    memset(local_addr.sin_zero, '\0', sizeof(local_addr.sin_zero));

    int local_socket;
    local_socket = socket(PF_INET, SOCK_STREAM, 0);
    cout<<bind(local_socket, (struct sockaddr *)&local_addr, sizeof(sockaddr_in))        <<endl;;


    char remote_addr[]="95.110.232.188";

    struct sockaddr_in remote_sockaddr;
    remote_sockaddr.sin_family=AF_INET;
    remote_sockaddr.sin_port=1180;
    remote_sockaddr.sin_addr.s_addr=inet_addr(remote_addr);
    memset(remote_sockaddr.sin_zero, '\0', sizeof(remote_sockaddr.sin_zero));
    cout<<"TRYING TO SEND.."<<endl;
    cout<<sendto(local_socket, "PTDMW", 5, 0, (struct sockaddr *) & …
Run Code Online (Sandbox Code Playgroud)

c++ sockets udp bind sendto

1
推荐指数
1
解决办法
395
查看次数

是否有可能为由都实现了特征的类型组成的任何元组自动实现特征?

假设我有一个

trait Happy {}
Run Code Online (Sandbox Code Playgroud)

我可以Happy为任何我想要的结构实现,例如:

struct Dog;
struct Cat;
struct Alligator;

impl Happy for Dog {}
impl Happy for Cat {}
impl Happy for Alligator {}
Run Code Online (Sandbox Code Playgroud)

现在,我想自动为所有由所有实现该特征的类型组成的元组使用implHappyHappy特征。从直觉上讲,所有快乐的元组也是快乐的。

可以做这样的事情吗?例如,我可以简单地将实现扩展Happy到两种Happy类型的元组:

impl <T, Q> Happy for (T, Q) where T: Happy, Q: Happy {}
Run Code Online (Sandbox Code Playgroud)

结果,这可以完美地编译:

fn f(_: impl Happy) {
}

fn main() {
    f((Dog{}, Alligator{}));
}
Run Code Online (Sandbox Code Playgroud)

但是我怎么能将其推广到任何长度的元组呢?据我所知,Rust中没有可变参数的泛型。有解决方法吗?

tuples variadic traits rust

1
推荐指数
1
解决办法
336
查看次数

使两个 div 漂浮在另一个的角落上

这是我需要的。我将有一个主 div,其中将包含我的大部分内容。我不知道会有多少内容,所以我不能对主 div 的高度(假设,以 px 为单位)做任何假设。我需要做的是使两个 div(具有特定的固定大小)位于主 div 的左上角(当然,z-index 大于主 div)和右下角同一个div。我真的不知道如何实现这一目标:有人可以告诉我该怎么做吗?

非常感谢!

马泰奥

html css position z-index

0
推荐指数
1
解决办法
1361
查看次数

在参数列表中使用std :: enable_if

在C++中,请考虑以下示例:

template <typename first, typename... params> struct q;

template <typename first> struct q <first>
{
    q()
    {
        cout<<"x"<<endl;
    }
};

template <typename first, typename... params> struct q
{
    q()
    {
        cout<<"x";
        q <params...> ();
    }
};

int main()
{
    q <int, int> ();
    q <int, int, enable_if<true, bool>::type> ();
    // q <int, int, enable_if<false, bool>::type> ();
}
Run Code Online (Sandbox Code Playgroud)

我定义了一个接受任意数量参数的模板结构.然后我用一组参数实例化它.每个构造函数都将构建一个新的q,其中包含所有参数,但第一个参数.只有一个参数的q不会再调用递归.

每次调用aq的构造函数时,它都会打印出一个"x".因此,main的第一行将导致程序打印出"xx",而第二行将打印出"xxx",因为enable_if实际上已启用.现在,如果第三行会导致我的程序打印出"xx"(即:build aq),我将非常感激.可悲的是,我得到的是错误

No template named 'type' in std::enable_if <false, bool>
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能纠正我的例子并使其有效?

谢谢

c++ templates enable-if

0
推荐指数
1
解决办法
540
查看次数

我可以安全地假设if(true)和if(false)将被优化吗?

在我的代码中,我有一个带bool value模板参数的函数.除了一行之外,在truefalse案例中函数的实现几乎完全相同.所以我想我会if(value)发表一个声明,以避免重写相同的函数两次.调用函数时,value在编译时确定,因此if语句缩减为a if(true)或a if(false).现在,我想知道:这是安全的假设,任何合理的编译器(比如说g++,clang++...)将优化这种说法?

是的,性能至关重要,是的,功能非常轻巧,因此即使是单一的if也会影响速度,是的,这个功能需要在许多人类赖以生存的实时设备上执行数万次.

c++ optimization g++ clang++

0
推荐指数
1
解决办法
387
查看次数

标签 统计

c++ ×3

bind ×1

clang++ ×1

css ×1

enable-if ×1

g++ ×1

html ×1

optimization ×1

position ×1

rust ×1

sendto ×1

sockets ×1

templates ×1

traits ×1

tuples ×1

udp ×1

variadic ×1

z-index ×1