小编qPC*_*vir的帖子

gcc优化的说明

出于黑客的好奇心,我想知道如何gcc能够巧妙地优化这个功能?

int c() {
        int i, j = 0;
        for (i = 0; i < 10; i++) {
                j += i;
        }
        return j;
}
Run Code Online (Sandbox Code Playgroud)

$objdump -D c.o 下面是针对arm但x86在逻辑上没有区别.

00000000 <c>:
   0:   202d        movs    r0, #45 ; 0x2d
   2:   4770        bx  lr
Run Code Online (Sandbox Code Playgroud)

我大多想知道这是否是一系列优化或类似模板匹配的结果?有没有关于此类优化的文档?

c optimization performance gcc

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

include_directories 用于导入库

我正在用 c++ 编写项目,并且在 cmake 中导入库时遇到问题。正在导入的第三方库不会传播包含目录。

根目录/CMakeLists.txt

# Top level CMakeLists.txt

cmake_minimum_required(VERSION 3.9.2 FATAL_ERROR)
project(camera_calib)

add_subdirectory(${PROJECT_SOURCE_DIR}/nana)

file(GLOB SRC "${PROJECT_SOURCE_DIR}/src/*.cpp")

add_executable(camera_calib_exe ${SRC})

target_include_directories(camera_calib_exe PRIVATE ${PROJECT_SOURCE_DIR}/include)
target_link_libraries(camera_calib_exe nana_lib)
Run Code Online (Sandbox Code Playgroud)

/nana/CMakeLists.txt

# nana c++ gui CMakeLists.txt

cmake_minimum_required(VERSION 3.9.2 FATAL_ERROR)
project(nana VERSION 1.5.6 LANGUAGES CXX)

add_library(nana_lib STATIC IMPORTED)
set_property(TARGET nana_lib PROPERTY IMPORTED_IMPLIB_DEBUG ${PROJECT_SOURCE_DIR}/lib/nana_v141_Debug_x64.lib)
set_property(TARGET nana_lib PROPERTY IMPORTED_IMPLIB_RELEASE ${PROJECT_SOURCE_DIR}/lib/nana_v141_Release_x64.lib)
set_property(TARGET nana_lib PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PROJECT_SOURCE_DIR}/include)
#set_property(TARGET nana_lib PROPERTY INCLUDE_DIRECTORIES ${PROJECT_SOURCE_DIR}/include)
Run Code Online (Sandbox Code Playgroud)

代码示例/src/main.cpp

#include <nana/gui.hpp>
#include <nana/gui/widgets/label.hpp>
#include <nana/gui/widgets/button.hpp>

int main(int argc, char** argv)
{
    nana::form fm(nana::rectangle(0, 0, 1900, 1000)); …
Run Code Online (Sandbox Code Playgroud)

c++ cmake nana

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

为C++建立标准GUI库的缺点是什么?

对于C++中的GUI编程,我们可以选择太多的库,例如Qt,Gtkmm,wxWidgets,FLTK,还有另一个已经存在的库:Nana.

Nana C++库使用现代C++(C++ 11)语言功能,如lambdas,模板等,它似乎与C++标准库兼容.

如果GUI库与C++标准库100%兼容,那么为什么我们不能将它用于下一个C++标准(C++ 14或C++ 17)?

库在C++标准库中需要哪些条件?如果条件没有定义,那么我们永远注定要陷入文本的黑洞,它会伤害你的心!否则,如果定义了条件,那么我在哪里可以请求库在下一个C++标准中?

c++ user-interface standard-library nana

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

这个Nana演示代码中使用的C++功能是什么?

他们的网页上,Nana GUI人员给出了这个例子:

#include<nana/gui.hpp>

int main()
{
     using namespace nana;
     form fm;
     drawing{fm}.draw([](paint::graphics& graph){
         graph.string({10, 10}, L"Hello, world!", colors::red);
     });
     fm.events().click(API::exit);
     fm.show();
     exec();
}
Run Code Online (Sandbox Code Playgroud)

在开始的行中使用的C++特性是什么:drawing {fm} .draw ...

我从来没有见过这样的用法.

c++11 nana

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

Eigen的记忆是如何形成的?

我写过这个从文本文件中读取一些数字的小解析器.

    data.resize(7,datapoints); //Eigen::Matrix<float,7,-1> & data
    dst = data.data();

    while( fgets(buf,255,fp) != 0 && i/7 < datapoints)
    {

        int n = sscanf(buf,"%f \t%f \t%f \t%f \t%f \t%f \t%f",dst+i++, dst+i++,dst+i++,dst+i++,dst+i++,dst+i++,dst+i++);
            i = i - 7 * (n<=0);
    }
    fclose(fp);
    return !(datapoints == i/7);
Run Code Online (Sandbox Code Playgroud)

问题是,当我对数据执行std :: cout时,它会翻转.

数据在:

0   4   0.35763609  0.64077979  0   0   1
0   4   0.36267641  0.68243247  1   0   2
0   4   0.37477320  0.72945964  2   1   3
Run Code Online (Sandbox Code Playgroud)

data.col(3)是

0.64077979  
0.68243247  
0.72945964 
Run Code Online (Sandbox Code Playgroud)

和data.col(4)是

0.35763609  
0.36267641  
0.37477320 
Run Code Online (Sandbox Code Playgroud)

我无法看到为什么它将数据水平翻转的逻辑?

c++ arguments eigen

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

比较2个字符串类型的字符串和LPWSTR

我想一个比较string例如"Tedt2.csv"&value这是LPWSTR在函数的声明.这是我的基本代码:

PWSTR   value = nullptr;
HRESULT hr    = properties->GetStringValue(key, &value);
Run Code Online (Sandbox Code Playgroud)

我测试了许多approches

if (wcsstr(&value, L"Tedt2.csv") == 0)
{
   wprintf(L"%ws: %ws\n", keyName, value);
}
Run Code Online (Sandbox Code Playgroud)

但它总是进入if.

有谁可以帮助我吗?它应该是微不足道的,但我有点迷失C++.我要做一个概念证明.

c++ string pointers

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