小编MSa*_*ers的帖子

sqrt()pow()fabs()不起作用

我正在尝试编译我的程序,我正在使用sqrt pow和fabs等功能.我确实包含math.h但由于某种原因我得到的错误如下:

    error C2668: 'fabs' : ambiguous call to overloaded function
Run Code Online (Sandbox Code Playgroud)

其他功能相同,包括:

    #include "stdafx.h"
    #include "math.h"
Run Code Online (Sandbox Code Playgroud)

我试过包括但仍然是同样的错误.有谁知道他们为什么不被承认?我的文件是.cpp而不是.c但它是一个MFC项目.

谢谢

c++ math c++03

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

是否需要构建boost.signals2库?

我的系统在构建boost库时遇到了问题.据我所知,大多数boost库(幸运的是)只是不需要构建的头文件(有一些例外).是否需要构建boost :: signals2库?boost.signals2库是否依赖于boost.signals库?

c++ boost boost-signals boost-signals2

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

Erlang的有向图里面是什么?

免责声明:作者是Erlang的新手.

我想在Erlang中实现某种最短路径算法.

Erlang中有一个图形数据结构的标准实现:http://www.erlang.org/doc/man/digraph.html

但是,我没有找到有关它使用的实际数据结构的任何信息.

大多数情况下我想知道:

  • 获得顶点动作的所有'邻居'的最坏情况表现是什么?
  • 从图中获取顶点的最坏情况是什么?

erlang directed-graph shortest-path

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

我可以禁止某些功能崩溃程序吗?

我希望制作交互式代码学习系统,它允许用户(通常是年轻程序员)用c ++语言编写一个函数的内容,将其发送到服务器,然后将其编译成动态库并从主程序调用.

程序期望函数根据给定的参数返回正确的答案.

当然,会有一些孩子,会导致分段错误等错误.(服务器是Linux驱动的).

那么,我可以创建退出函数的信号处理程序吗?

我想要完成的事情:

for (int i = 0; i < PLAYER_NUM; i++) {
    snprintf(buf, sizeof(buf), "players/%s.so", player[i]);
    handle = dlopen(buf, RTLD_LAZY);
    add[i] = (int (*)(int, int))dlsym(handle, "sum");
} // that was simply loading of functions from libraries.

for (int x = 0; x < 10; x++)
    for (int i = 0; i < PLAYER_NUM; i++) {
        if(failed[i]) continue;
        ret = add[i](x, 5);

    if(sigfault_received() || res != (x + 5)) {
        failed[i] = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

c c++ sandbox segmentation-fault dynamic-library

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

使用MFC创建WM_USER处理程序

虽然我有很多软件经验,但我没有做过大量的Windows编程.我试图从一个线程发布WM_USER消息,以便它在主UI线程中被拾取,但我遇到了一些麻烦.这是使用VS2010和MFC的C++.

我创建了一个消息映射,

#define WM_MYMSG (WM_USER + 77)
BEGIN_MESSAGE_MAP(CMyApp, CWinApp)
    ON_MESSAGE(WM_MYMSG, DoSomething)
END_MESSAGE_MAP()
Run Code Online (Sandbox Code Playgroud)

声明处理函数如下,

afx_msg LRESULT DoSomething(WPARAM wParam, LPARAM lParam);
Run Code Online (Sandbox Code Playgroud)

并将函数体写为,

LRESULT CMyApp::DoSomething( WPARAM wParam, LPARAM lParam ) 
{
    UNREFERENCED_PARAMETER(wParam);
    UNREFERENCED_PARAMETER(lParam);

    CallSomeFunction();
    return 0L;
}
Run Code Online (Sandbox Code Playgroud)

据我所知,这完全符合MSDN所说的内容.

http://msdn.microsoft.com/en-gb/library/k35k2bfs(v=vs.100).aspx

但是我得到了一个

error C2440: 'static_cast' : cannot convert from 'LRESULT (__cdecl CMyApp::*)(WPARAM,LPARAM)' to 'LRESULT (__cdecl CWnd::* )(WPARAM,LPARAM)'
Run Code Online (Sandbox Code Playgroud)

与该线有关

ON_MESSAGE(WM_AVATAR_SCALE_MSG, DoSomething)
Run Code Online (Sandbox Code Playgroud)

谁能让我知道问题是什么?

谢谢阅读.

保罗

c++ windows mfc

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

用c ++中的文件指针替换stdout和stdin?

我有一个用c编写的沙箱代码.它中包含以下行: msb.sbox.task.ofd = STDOUT_FILENO;.那是可执行文件的输出写入标准输出.我想改变它,所以输出被写入文件而不是.我试过这样做

  FILE * fp;
  fp=fopen("myf","w");
  msb.sbox.task.ofd=fp;
Run Code Online (Sandbox Code Playgroud)

但是这给出了警告.warning: assignment makes integer from pointer without a cast [enabled by default]我怎么去做?

c++ posix

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

std :: sort(来自<algorithm>)崩溃

下面的程序,一个简单的向量排序,在第二次排序调用时崩溃t> = 17.即使对于t == 100,第一次排序也会成功.挣扎了很长一段时间,但我无法弄清楚出了什么问题.有人可以帮帮我吗?

我已经在MacBook Air和Linux机器上试过了,令人惊讶的是,我看到了同样的结果.

#include<iostream>
#include<vector>
#include<algorithm>

    using namespace std;
    struct tc
    {
        unsigned int n;
    };
    bool sort_by_n( tc a, tc b )
    {
        return a.n <= b.n;
    }
    vector<tc> tcv(100);
    vector<int> tv(100);
    int main()
    {
        unsigned int t;
        cin >> t;
        for ( unsigned int i = 0 ; i < t ; i++ )
        {
            cin >> tcv[i].n;
            tv[i] = tcv[i].n;
        }
        sort( tv.begin(), tv.begin()+t); // ## This one works even for t == …
Run Code Online (Sandbox Code Playgroud)

c++ linux stl stl-algorithm

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

我应该将数字存储在字符中以节省内存吗?

问题很简单。我是否应该在 char 或 uint_8t 变量类型中存储一些不超过 255 的数字以节省内存?

节省几个字节的内存是否很常见,甚至值得吗?

c++ variables

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

为什么 Visual Studio 2019 不支持 Openmp 的 for-reduction 中的关键字“max”?

当我像这样使用 openmp 时:

#pragma omp parallel for reduction(max: dumax)
Run Code Online (Sandbox Code Playgroud)

IDE 将在 Openmp 中引发错误“max”“reduction”无效

#pragma omp parallel for reduction(max: dumax)
Run Code Online (Sandbox Code Playgroud)

c++ openmp visual-studio-2019

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

std::add_pointer,try_add_pointer 在可能的实现中有什么用?

在 cppreference add_pointer 中,据说我们可以将其实现为:

namespace detail {

template <class T>
struct type_identity { using type = T; }; // or use std::type_identity (since C++20)

template <class T>
auto try_add_pointer(int) -> type_identity<typename std::remove_reference<T>::type*>;
template <class T>
auto try_add_pointer(...) -> type_identity<T>;

} // namespace detail

template <class T>
struct add_pointer : decltype(detail::try_add_pointer<T>(0)) {};
Run Code Online (Sandbox Code Playgroud)

我的问题是try_add_pointer为了什么?我知道是 SFINAE。但是为什么这里的实现需要它?

c++ c++11

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