小编Nat*_*mon的帖子

#define NOMINMAX使用std :: min/max

我最近补充说:

#define NOMINMAX
#include <Windows.h>
#include <algorithm>
Run Code Online (Sandbox Code Playgroud)

到我的main.cpp才能使用

std::max( x , x ); // x is just a placeholder and not actual anything
std::min( x  , x );
Run Code Online (Sandbox Code Playgroud)

但我不能std::max()/std::min()在其他文件中使用.

error C2589: '(' : illegal token on right side of '::'
error C2059: syntax error : '::'
Run Code Online (Sandbox Code Playgroud)

我试图添加#define NOMINMAX我的其他文件,但失败了.什么是线索?

我问之前环顾四周,但我不明白答案在Visual C++上NOMINMAX可能出现问题

c++ winapi visual-studio

32
推荐指数
5
解决办法
4万
查看次数

std::generate_n 的返回值迭代器,你能用它做什么?

出于好奇!

你可以用回做什么iterator的std::generate_n?

返回值:

迭代器经过分配的最后一个元素 if count > 0,否则首先。

    std::vector<int> v{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    auto iterator = std::generate_n(std::back_inserter(v), 10, [&]() {return j++;});
    std::cout << "type: " << typeid(iterator).name() << '\n';
/*
    for (iterator = v.begin(); iterator< v.end(); iterator++){
        std::cout << *iterator << " " << endl;
    }
*/
    for(auto a : v)
        std::cout << a << " ";
    std::cout << std::endl;
Run Code Online (Sandbox Code Playgroud)

输出:

type: St20back_insert_iteratorISt6vectorIiSaIiEEE
1 2 3 4 5 6 …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm iterator std return-value

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

在各自的线程上运行多个对象似乎多次运行同一个对象

我正在尝试创建一个类的12个新实例并运行它们中的每一个它是一个自己的线程,但它们接缝以共享相同的数据.所有12个实例都位于相同的X和Y位置,但它们每个都应该在随机方向上移动.正如你在代码中看到的,我尝试了各种apraoches,我无法找到原因.

我在这做错了什么?

ps是的...我知道还有一些未使用的变量.在我发布问题之前,我已经看过很多地方了

enemy.cpp

#include "enemy.h"
#include <time.h>
#include <windows.h>



FILE* pEnemyFile = fopen ("enemylog.txt","w");

Enemy::Enemy(const MouseServer& mServer, int& lastMousePosX, int& lastMousePosY, int& winSizeX, int& winSizeY )
    :mouseServer(mServer),
    lastMouseX( ( lastMousePosX ) ? lastMousePosX : 0 ), // evaluate if we get the reference
    lastMouseY( ( lastMousePosY ) ? lastMousePosY : 0 ),
    myPositionX(0),
    myPositionY(0),
    winSizeX(winSizeX),
    winSizeY(winSizeY),
    x(0),
    y(0)
{
    // original source:
    // http://msdn.microsoft.com/en-us/library/windows/desktop/ms682516(v=vs.85).aspx
    // Allocate memory for thread data.
    EDATA threadEnemyData = (EDATA) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,sizeof(enemyData));


    // http://www.codeproject.com/Articles/14746/Multithreading-Tutorial
    // …
Run Code Online (Sandbox Code Playgroud)

c++ oop winapi multithreading object

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

错误[E0463]:找不到“core”的包注意:可能未安装“thumbv7m-none-eabi”目标

我试图让 bluepill(arm STM32)上的 LED 闪烁并按照本教程中的说明进行操作,但是当我尝试编译代码时遇到此错误。我用的是ubuntu。

我刚刚安装了 Rust / Cargo,如教程中所示。我安装了stlink,我对 Rust、Cargo 或 Bluepil 没有经验。

$ cargo build --release:

        error[E0463]: can't find crate for `core`
      |
      = note: the `thumbv7m-none-eabi` target may not be installed
Run Code Online (Sandbox Code Playgroud)

它依赖于 ./cargo/config 文件吗?

$ rustup show
Default host: x86_64-unknown-linux-gnu
rustup home:  /home/marco/snap/rustup/common/rustup

installed toolchains
--------------------

stable-x86_64-unknown-linux-gnu (default)
nightly-x86_64-unknown-linux-gnu

installed targets for active toolchain
--------------------------------------

thumbv7m-none-eabi
x86_64-unknown-linux-gnu

active toolchain
----------------

stable-x86_64-unknown-linux-gnu (default)
rustc 1.46.0 (04488afe3 2020-08-24)
Run Code Online (Sandbox Code Playgroud)
$ rustup target add thumbv7em-none-eabi
info: downloading component …
Run Code Online (Sandbox Code Playgroud)

rust rust-cargo

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