小编hun*_*tea的帖子

在C++中正确使用/包含uint64_t

作为参考,我在C++ 11中进行编译.

我开始使用电路板的位图表示作为以片段为中心的方法编写国际象棋引擎.似乎使用的合适类型是uint64_t,但是,在网上搜索了一下之后,我对这里的"最佳实践"有点不确定.

我开始为游戏板定义.hpp文件.首先,我对不同代码似乎表现出来的类似行为感到困惑.

#include <cstdint>
uint64_t board;
Run Code Online (Sandbox Code Playgroud)

#include <cstdint>
std::uint64_t board;
Run Code Online (Sandbox Code Playgroud)

编译得很好.两者有什么区别?这个比那个好吗?

另外,我注意到我甚至不需要包含cstdint就可以使用uint64_t:

#include <iostream>
uint64_t board;
Run Code Online (Sandbox Code Playgroud)

#include <iostream>
uint64_t std::board;
Run Code Online (Sandbox Code Playgroud)

两者都编译得很好,就像上面的2个cstdint示例一样.因此,我对如何在C++ 11中使用uint64_t感到困惑,以及为什么所有这四个例子都完全相同.我被告知你想使用cstdint,但似乎iostream也提供了类型def?是否存在"最佳/最安全"的特定方式(例如,在名称空间冲突方面)?

c++ c++11

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

SFML 库未加载错误,未找到图像

我正在尝试在不使用 Xcode 的情况下在我的 OS Mac 上开始使用 SFML,并且已经完成了非 IDE 安装。我正在关注本教程:https : //www.sfml-dev.org/tutorials/2.0/start-linux.php这是 linux 安装页面,但它似乎适合尝试在 mac OS 终端上执行此操作的人。

我有一个 CPP 目录,用于保存我的 example.cpp 文件,在该目录中有一个“Resources”文件夹,用于保存 SFML 的内容。但是,我的终端出现“库未加载”错误,我在网上搜索了一些,但仍然遇到了一些麻烦。从那以后,我在自制软件上添加了“freetype”,但这似乎不起作用。我还确保告诉动态链接器在哪里可以找到 SMFL 库。

el-nino:CPP Home$ g++ -std=c++11 -IResources/SFMLR/include -c example.cpp
el-nino:CPP Home$ g++ example.o -o sfml-app -LResources/SFMLR/lib -lsfml-graphics -lsfml-window -lsfml-system
el-nino:CPP Home$ ./sfml-app
dyld: Library not loaded: @rpath/../Frameworks/freetype.framework/Versions/A/freetype
Referenced from: /Users/Home/Desktop/Junk_Code/CPP/Resources/SFMLR/lib/libsfml-graphics.2.4.2.dylib
Reason: image not found
Abort trap: 6
Run Code Online (Sandbox Code Playgroud)

c++ macos sfml

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

Golang频道输出顺序

func main() {
  messages := make(chan string)
  go func() { messages <- "hello" }()
  go func() { messages <- "ping" }()
  msg := <-messages
  msg2 := <-messages
  fmt.Println(msg)
  fmt.Println(msg2)
Run Code Online (Sandbox Code Playgroud)

上面的代码在我的终端上始终打印"ping"然后"hello".我对这个打印的顺序很困惑,所以我想知道我是否可以对我的想法做一些澄清.

据我所知,在等待发送方和接收方时,无缓冲的通道都在阻塞.因此,在上述情况下,当执行这两个例程时,在两种情况下都没有接收器.所以我猜这两个例程都会阻塞,直到通道上的接收器可用.

现在......我会假设第一个"你好"被尝试进入频道,但必须等待......同时,"ping"尝试,但再次必须等待.然后

msg := <- messages
Run Code Online (Sandbox Code Playgroud)

显示,所以我假设在那个阶段,程序将任意选择一个等待的goroutine并允许它将其消息发送到通道,因为msg已准备好接收.

然而,似乎无论我运行多少次程序,总是msg被分配"ping"而msg2被分配为"hello",这给人的印象是"ping"始终优先发送到第一个(到MSG).这是为什么?

channel go

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

标签 统计

c++ ×2

c++11 ×1

channel ×1

go ×1

macos ×1

sfml ×1