- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
<分区>
下面的代码是否包含未定义的行为?该代码仅尝试用sockaddr_in
结构格式填充sockaddr_storage
结构,然后通过相同类型读回。 sockaddr_in
。同样在以下调用中,该 sockaddr_storage
结构通过转换为 sockaddr
结构传递。我看到了类似的问题,想知道这段代码是否也包含它。这个程序在我测试过的任何地方都运行良好 -
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <iostream>
using namespace std;
void fillAF_INET(sockaddr_storage &s){
sockaddr_in *p = reinterpret_cast<sockaddr_in *>(&s);
p->sin_family = AF_INET;
p->sin_port = htons(10000);
inet_pton(AF_INET, "127.0.0.1", &p->sin_addr);
}
// void fillAF_INET6(sockaddr_storage &s){...}
// void fillAF_UNIX(sockaddr_storage &s){...}
int main(){
sockaddr_storage s;
fillAF_INET(s);
sockaddr_in *p = reinterpret_cast<sockaddr_in *>(&s);
std::cout << ntohs(p->sin_port) << " ";
std::cout << boolalpha << (p->sin_family == AF_INET);
int sock = socket(AF_INET, SOCK_STREAM,0);
int r = bind(sock, (sockaddr *)&s, sizeof(s));
// further calls
return 0;
}
结果来了:10000 true
绝对正确!
在回答中 Is it valid to create closure (lambda) objects using `std::bit_cast` in C++20? 表明程序可能具有未定义的行为“取
C++ 20 draft [concept.default.init] 没有精确定义 default_initializable template concept default_initializa
我担心这又是一个关于解释 ISO/IEC 14882(C++ 标准)的问题,但是: 正在从程序中调用 main,例如我从 main 递归调用 main() 至少不是实现定义的行为? (更新:我的意思是
想象一下: uint64_t x = *(uint64_t *)((unsigned char[8]){'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'}); 我有 rea
考虑以下代码: int main() { typedef struct { int first; float second; } type; type whole = { 1, 2.0
这个问题已经有答案了: (Why) is using an uninitialized variable undefined behavior? (7 个回答) 已关闭 6 年前。 SO 上各种受人尊
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 6 年前。 Improve this ques
我最近在这样的代码中遇到了一个错误 class C { public: // foo return value depends on C's state // AND each cal
我最近在升级到 gcc 7.2 后遇到了一个奇怪的 C++ 崩溃,这可以使用以下简单的完整 c++11 程序来演示: #include #include struct MyObject {
所以,我一直在阅读 the C++ standard并来到 [defns.undefined](我正在阅读的 C++17 草案中的 3.27。请注意,虽然我在这里引用 C++17,但我在 other
这不是 Rvalue reference to lvalue reference 的拷贝 由于我是针对 C++17 提出这个问题的:由于悬空引用,以下是否仍会调用未定义的行为(当然,如果使用了引用)?
这个问题在这里已经有了答案: Arithmetic right shift gives bogus result? (2 个答案) 关闭 7 年前。 我想检查一些大的计算内存需求(存储在 unsig
坦率地说,这样的代码是否有效(除了缺乏必要的错误检查,为简单起见此处省略)? 通过互联网发送数据的代码: uint16_t i = htons(500); sendto(sockfd, &i, siz
我知道 C 和 C++ 以及不同的语言,但以下内容适用于两者。 TL/DR 我知道 i = i++; 是 UB,因为 i 在表达式中被修改了两次,而 C 和 C++ 禁止它。 引用资料: C99 6.
是否有可能满足以下条件的代码在每次运行相同输入时产生不同的输出? 虽然代码是单线程的它确实链接到一个线程安全的运行时库。 没有明确调用 rand() 或 time() 或它们的 friend 。 有一
这个问题在这里已经有了答案: is there issue will stringstream.str().c_str()? [duplicate] (3 个答案) 关闭 6 年前。 考虑以下代码,
根据 C++ 标准,如果对象本身不是 const,则可以从指针中丢弃 const 并写入对象。这样: const Type* object = new Type(); const_cast( ob
下面的代码会调用 UB 吗? int main(){ volatile int i = 0; volatile int* p = &i; int j = ++i * *p; } 最佳答案
这个问题在这里已经有了答案: will casting around sockaddr_storage and sockaddr_in break strict aliasing (2 个答案) 关
假设我们有来自 C++98 的遗留代码: bool expensiveCheck(); struct Foo; bool someFunc() { Foo *ptr = 0; if(
我是一名优秀的程序员,十分优秀!