我想知道是否可以确定当前设备是什么类型的iPhone(例如)?我知道有可能通过这个模型
NSString *deviceType = [[UIDevice currentDevice] model];
只返回我是否有"iPhone"或"iPod",但我想知道是否有可能检测/知道我是否有iPhone 3GS与iPhone 4对比一个iPhone 4S (实际上,我真正想做的就是确定我是否有3G,因为我做的是相当图形密集的东西).
所以是的,请告诉我,谢谢!
我有这样的功能:
#include <setjmp.h>
jmp_buf buf;
void func2(int g);
extern int some_global;
void func(int x)
{
if (setjmp(buf))
return;
if (some_global)
x += 5;
func2(x);
}
Run Code Online (Sandbox Code Playgroud)
GCC(gcc(Debian 4.4.5-8)4.4.5)发出警告:
test.c: In function ‘func’: test.c:5: warning: argument ‘x’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered]
为什么????我的意思是,显然我不在乎是否x被破坏,因为它不可能在setjmp返回后使用.即使编译器应该知道一些非常明显的东西,因为它具有某种特殊的知识setjmp.
我的主要兴趣是找到我继承的代码库中的错误,因此,"使用这种编码风格"并不是我正在寻找的建议.然而,这里有许多奇怪的曲折.例如,如果x是局部变量而不是参数,那么GCC不会抱怨.此外,GCC不会在没有if (some_global)线的情况下抱怨.尼斯.有些事情搞砸了GCC的流量分析,或者GCC知道我不知道的事情.
所以,
是否有一种简单的方法来抑制此函数的此警告,就像您可以将未使用的参数转换为(void)?
或者我只是在项目范围内禁止警告?
或者我错过了什么?
更新:让我与您分享一个不会产生警告的略有不同的版本:
#include <setjmp.h>
jmp_buf buf;
void func2(int g);
extern int some_global;
void func(int …Run Code Online (Sandbox Code Playgroud) 根据ARM ARM,__ARM_NEON__定义了可用的Neon SIMD指令.我无法让GCC提供它.
在运行Debian 8.2的BananaPi Pro开发板上可以使用霓虹灯:
$ cat /proc/cpuinfo | grep neon
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
Run Code Online (Sandbox Code Playgroud)
我正在使用GCC 4.9:
$ gcc --version
gcc (Debian 4.9.2-10) 4.9.2
Run Code Online (Sandbox Code Playgroud)
试试GCC并-march=native:
$ g++ -march=native -dM -E - </dev/null | grep -i neon
#define __ARM_NEON_FP 4
Run Code Online (Sandbox Code Playgroud)
好的,在为Neon构建时尝试Google用于Android的内容:
$ g++ -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp -dM -E - </dev/null | grep -i neon
#define __ARM_NEON_FP 4
Run Code Online (Sandbox Code Playgroud)
也许ARMv7-a有一个硬浮点数:
$ g++ -march=armv7-a -mfloat-abi=hard …Run Code Online (Sandbox Code Playgroud)