小编Van*_*lla的帖子

根据CPU功能在gcc中选择适当的ARM -mfpu选项

我的CPU具有以下CPU功能

cat /proc/cpuinfo 
Processor       : ARMv7 Processor rev 4 (v7l)
processor       : 0
BogoMIPS        : 1192.96

processor       : 1
BogoMIPS        : 1197.05

Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 4

Hardware        : sun7i
Revision        : 0000
Run Code Online (Sandbox Code Playgroud)

和gcc设置

-march=armv7ve -mfloat-abi=hard -mfpu=vfpv3-d16 -meabi=5
Run Code Online (Sandbox Code Playgroud)

选项

cat main.c
#include <stdio.h>

void main()
{
    printf("Hello World!\n");
}
Run Code Online (Sandbox Code Playgroud)

用.编译

gcc -march=native …
Run Code Online (Sandbox Code Playgroud)

c gcc arm compiler-optimization

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

如何调用模板函数更简洁

有一个功能

template <class ...T>
void foo(std::function<void(T...)> callback);
Run Code Online (Sandbox Code Playgroud)

我通过回调.

我想做点什么

foo(bar);
Run Code Online (Sandbox Code Playgroud)

bar例如,在哪里

void bar(int a, long b, double c, float d);
Run Code Online (Sandbox Code Playgroud)

但这给了我

error: no matching function for call to bar(void (&)(int, long int, double, float))
Run Code Online (Sandbox Code Playgroud)

我要打电话foo

foo(std::function<void(int, long, double, float)>(bar));
Run Code Online (Sandbox Code Playgroud)

这太冗长了.甚至

foo<int, long, double, float>(bar);
Run Code Online (Sandbox Code Playgroud)

本来会更好.

foo(bar);
Run Code Online (Sandbox Code Playgroud)

会是理想的.

无论如何,我怎么能打电话来foo减少冗长?

编辑:声明foo必须保持不变.

c++ templates

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

标签 统计

arm ×1

c ×1

c++ ×1

compiler-optimization ×1

gcc ×1

templates ×1