我几个小时都在苦苦挣扎,但我无法找出我做错了什么.这是一个非常简单的程序,应该将一个简单的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) 假设我有一个
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)
现在,我想自动为所有由所有实现该特征的类型组成的元组使用impl
我Happy
的Happy
特征。从直觉上讲,所有快乐的元组也是快乐的。
可以做这样的事情吗?例如,我可以简单地将实现扩展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中没有可变参数的泛型。有解决方法吗?
这是我需要的。我将有一个主 div,其中将包含我的大部分内容。我不知道会有多少内容,所以我不能对主 div 的高度(假设,以 px 为单位)做任何假设。我需要做的是使两个 div(具有特定的固定大小)位于主 div 的左上角(当然,z-index 大于主 div)和右下角同一个div。我真的不知道如何实现这一目标:有人可以告诉我该怎么做吗?
非常感谢!
马泰奥
在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)
我该怎么做才能纠正我的例子并使其有效?
谢谢
在我的代码中,我有一个带bool value
模板参数的函数.除了一行之外,在true
和false
案例中函数的实现几乎完全相同.所以我想我会if(value)
发表一个声明,以避免重写相同的函数两次.调用函数时,value
在编译时确定,因此if
语句缩减为a if(true)
或a if(false)
.现在,我想知道:这是安全的假设,任何合理的编译器(比如说g++
,clang++
...)将优化这种说法?
是的,性能至关重要,是的,功能非常轻巧,因此即使是单一的if
也会影响速度,是的,这个功能需要在许多人类赖以生存的实时设备上执行数万次.