小编use*_*042的帖子

CMake错误:CMake无法找到与“ MinGW Makefiles”相对应的生成程序

我正在尝试使用cmake为c ++构建Box2D库。当我运行cmake gui时,出现错误:

CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
Configuring incomplete, errors occurred!
Run Code Online (Sandbox Code Playgroud)

像这些人一样,大多数问题都通过说“将MinGw / bin添加到PATH”来回答,但我已经在PATH上找到了。还有什么可能导致此错误?

c++ cmake box2d

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

makefile 中的 ${CC} 是什么意思?

我有使用${CC}变量进行编译器选择的 makefile:

${CC} $(CFLAGS) aaa.cpp -o aaa.o
Run Code Online (Sandbox Code Playgroud)

在 make ${CC} 期间带来 cc 编译器。${CC}但整体上没有定义makefile。这个变量怎么得呢cc

makefile cc

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

包含两个具有相同函数名称的库时,链接器警告“忽略第二个定义”

语境

我正在开发一个旨在向设备发送某些命令的项目。每个设备都可以与一个 dll 连接(例如 deviceADll.h、deviceBDll.h),并且这些 Dll 不是由我编写的,我也不能以任何方式修改它们。我负责将DeviceB集成到项目中,对项目结构进行最小的更改。我知道该结构可能不是最佳的和/或设计良好的,因此我愿意接受有关该问题的建议作为最后的解决方案。

由于设备非常相似,因此所有 Dll 函数都具有相同的名称,并且通常具有相同的原型。

也正因为如此,我创建了一个父类(Device_ts.h),DeviceA_ts.h和DeviceB_ts.h继承自该父类(我也有一个设备的工厂类,但我认为它与我的问题无关) 。

问题

当我尝试包含两个 Dll 时出现问题:项目编译,但我得到一个

Warning 60 warning LNK4006: Connect@12 already defined in DeviceA.lib(DeviceA.dll); second definition ignored C:\project_path\DeviceB.lib(DeviceB.dll) Project_Name

随后是一个

Warning 61 warning LNK4006: __imp__Connect@12 already defined in DeviceA.lib(DeviceA.dll); second definition ignored C:\project_path\DeviceB.lib(DeviceB.dll) Project_Name

和一个

Warning 62 warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library C:\project_path\DeviceB.lib(DeviceB.dll) Project_Name

有人经历过类似的情况吗?我应该忽略这些警告还是因为它们的定义被忽略而无法调用DeviceB.h函数? …

c++ dll visual-studio linker-warning

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

在循环中使用相同的变量名是否可以?

我刚开始用C++编程,在编写代码时我开始注意到我的代码中有很多for循环,然后我开始思考.

在for循环中,当你创建如下变量for (int **i**=1;i<10;i++)时,i循环完成后会发生什么?
是否可以使用相同的变量名创建多个for循环?
如何在循环中创建变量?

c++ loops for-loop while-loop

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

我的老师不像其他人一样打字.有谁知道他在做什么?

我的老师在我们的一个铸造示例中包含了以下几行.cCircle继承自类的类的对象Point.在我搜索问题的答案"我可以将类的对象转换Point为类型Circle吗?" 我发现他使用的语法与我曾经使用的每个网站不同.这些网站都使用static_castdynamic_cast语法.他不会在测试中使用static_cast和dynamic_cast,我只是想知道他在使用什么以及它是如何运作的.

另外,如果你能回答我是否可以将基础对象转换为派生类型,我非常感谢你.

output << "the center of the circle is at " << (Point) c; 
// casting `Circle` object `c` with type `(Point)`, calls the first overloaded >stream insertion operator"
Run Code Online (Sandbox Code Playgroud)

c++ inheritance casting static-cast

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

什么是方法返回的幕后?

我正在学习c ++,我的老师写了这段代码:

  • Tpoint并且TObjetGraphique是两个分开的类
  • origine是类型的对象Tpoint声明privateTObjetGraphique

     TPoint TObjetGraphique::getOrigine() const
        {return (TPoint(origine));}
    
    Run Code Online (Sandbox Code Playgroud)

我想知道为什么我们不会写:

TPoint TObjetGraphique::getOrigine() const
   {return origine;}
Run Code Online (Sandbox Code Playgroud)

有什么区别吗?

c++

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

在编译时不知道参数时,不会调用`constexpr`构造函数

目前我正在阅读Scott Meyers的Effective Modern C++(第15项 - 尽可能使用constexpr).作者说:

当使用编译期间未知的一个或多个值调用constexpr函数时,它的作用类似于普通函数,在运行时计算其结果.这意味着您不需要两个函数来执行相同的操作,一个用于编译时常量,另一个用于所有其他值.constexpr功能可以完成所有工作.

我在http://coliru.stacked-crooked.com/中尝试了以下代码片段

#include <iostream>

class Point
{
    public:
        constexpr Point(double a, double b) noexcept
            : _a(a), _b(b)
        {
        }

        void print() const noexcept
        {
            std::cout << "a -> " << _a << "\tb -> " << _b << std::endl;
        }

    private:
        double _a;
        double _b;
};

double get_a() noexcept
{
    return 5.5;
}

double get_b() noexcept
{
    return 5.6;
}


int main()
{
    constexpr Point p1(2.3, 4.4);
    p1.print(); …
Run Code Online (Sandbox Code Playgroud)

c++ c++11 c++14

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

有没有办法使用RTTI获取基于签名的typeinfo错位函数名?

我想使用RTTI和损坏的函数(指针)类型字符串.

在将其归类为XY问题之前,我知道有更好的选项可以使用多态等来绑定函数.

这是一个纯粹的学术问题,如何typeid()正确使用函数指针,这些函数指针应该因其合法重载的签名而有所不同.

如果我使用以下代码,似乎我可以检索typeinfo::name()各种命名空间/类型的唯一值:

#include <iostream>
#include <typeinfo>
#include <string>

void foo(int) {
}

namespace woozle {
    void goozle(int) {}
}

struct bar {
    void baz(int) {}
    static void boo(int) {}
};

int main() {
    std::cout << typeid(&foo).name() << std::endl;
    std::cout << typeid(&woozle::goozle).name() << std::endl;
    std::cout << typeid(&bar::baz).name() << std::endl;
    std::cout << typeid(&bar::boo).name() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

PFviE
PFviE
M3barFviE
PFviE
Run Code Online (Sandbox Code Playgroud)

完全符合我的预期(我假设i在错位的名称中指的是参数签名).


现在我想要这样的东西(这是完全合法的函数重载):

#include <iostream>
#include <typeinfo>
#include <string>

void foo(int) { …
Run Code Online (Sandbox Code Playgroud)

c++ rtti typeid typeinfo

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

为什么函数不给出整数溢出

我用C++和Pascal编写了函数,给出了第n个Fibbonacci数.正如预期的大n值(n> 92,因为甚至f(93)> 2 ^ 63 + 1)我得到了不正确的结果.
但是当我将它们与相同的n进行比较时,我会在两种语言中得到相同的结果.

这与我的想法相反,我会得到一些随机数.
我想知道为什么我得到相同的结果以及为什么我首先没有得到整数溢出.

有人可以向我解释一下吗?

码:

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;

long long fibo(int n){
    long long a1,a2,pom;
    int i=1;
    a1 = 0; a2 = 1;
    while(i<=n){
        pom = a2;
        a2 = a1 + a2;
        a1 =  pom;
        i++;
    }
    return a1;
}

int main(){
    int n;
    cin >> n;
    cout << "Function: "<< setprecision(50) << fibo(n) << endl;
}
Run Code Online (Sandbox Code Playgroud)
Program AddNums(output);
function fibo(n:integer):int64;
    var
        a1,a2,pom:int64;
        i:integer;
    begin
        a1:=0;a2:=1;i:=1;
        while(i<=n)do …
Run Code Online (Sandbox Code Playgroud)

c++ pascal function fibonacci

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

使用'\ 0'作为比较操作数

我的函数应列出屏幕上char数组的所有元素.但是如果阵列完成它应该停止.数组的大小是可变的.我以为数组以'\ 0'结尾.所以我这样做了:

for(int i=0; i< size; i++){
    if(word[i] != '\0')
        cout<< word[i];
}
Run Code Online (Sandbox Code Playgroud)

但该计划并不止于此.它会创建一些随机符号.

例如char number [] ="0123"
该程序给出:0123§&

我的if条件出了什么问题?

c++ arrays

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