我正在尝试优化一些代码,这似乎很简单,但却让我很难过.所以基本上,我试图使一个数值为1,如果它大于0.问题是我不想使用任何比较,因为它们非常昂贵并且得到一个没有比较的解决方案将节省我它被称为很多40秒.所以我想要的是比特明智的运算符,加法,减法,除法和乘法.
额外:数字将只有1或2.
类型是unsigned int.
完整算法:
DWORD num = (blockNum / 0xAA) * blockStep[0];
switch (blockNum / 0xAA)
{
case 0:
return num + hashOffset;
default:
num += ((blockNum / 0x70E4) + 1) << (BYTE)packageSex;
switch (blockNum / 0x70E4)
{
case 0:
return num + hashOffset;
default:
return num + (1 << (BYTE)packageSex) + hashOffset;
}
}
Run Code Online (Sandbox Code Playgroud) 我已经在Windows上与MinGW合作了一段时间,我现在正在尝试在Mac上编译它(使用GCC).我使用的是Qt,但这与问题没什么关系.
为什么海湾合作委员会如此正式,让我投下一切?这是多么荒谬的我必须经历并抛出一切不匹配的东西.
例如,它会抛出错误:
main.cpp: error: invalid conversion from 'const char*' to 'char*'
Run Code Online (Sandbox Code Playgroud)
使用此代码:
const char *a = "a";
char *b = a;
Run Code Online (Sandbox Code Playgroud)
是否有任何标志我可以传递给GCC编译器或任何预处理器指令告诉它忽略这些?谢谢.
编辑:让我改一下.为什么这对MinGW而不是GCC有用,我可以让它在GCC上工作吗?
编辑2: MinGW - http://i.imgur.com/zGvf6.png
我很惊讶地说,我没有找到一个合理的解决方案,如何使用C++标准库调整文件大小.从原始文件中读取数据然后将其写入不同的文件似乎是完全愚蠢和浪费的.我只想要一个调整大小的方法来切断超出那个大小的数据......有什么能做到这一点吗?
编辑:如果我必须使用我上面解释的方法,我的缓冲区应该有多大,我用来读/写?我显然无法立即读取整个文件,因为我在这里使用相当大的文件.
这个愚蠢的结构我一直有很多麻烦.我不明白为什么会这样做,我真的不确定如何解决它.我知道如何修复它的唯一方法是删除结构并以其他方式执行(我不想这样做).
所以我正在从一个文件中读取数据,而我正在将它读入一个结构指针.看起来我的'long long'的偏移/指针每次都搞砸了.在下面详细查看.
所以这是我的结构:
struct Entry
{
unsigned short type;
unsigned long long identifier;
unsigned int offset_specifier, length;
};
Run Code Online (Sandbox Code Playgroud)
这是我的代码,用于读取结构指针/数组中的所有废话:
Entry *entries = new Entry[SOME_DYNAMIC_AMOUNT];
fread(entries, sizeof(Entry), SOME_DYNAMIC_AMOUNT, openedFile);
Run Code Online (Sandbox Code Playgroud)
如您所见,我将所有内容写入结构数组中.现在,我将向您展示我正在阅读的数据(对于此示例中的第一个结构).

所以这是进入'条目'中第一个元素的数据.第一项(短,'类型'),似乎读得很好.之后,当读取'标识符'时,似乎整个结构被移位了X个字节.这是第一个元素的图片(在反转endian之后):

这里是内存中的数据(红色方块是它开始的地方):

我知道这有点令人困惑,但我试图尽可能地解释它.感谢任何帮助,Hetelek.:)
我不确定这是否可行,但我试图在C++的用户默认浏览器中打开一个URL.我只想使用'ShellExecute',但我试图让它跨平台.任何人都知道这是可能的,如果是的话?
通过跨平台我的意思是3:
我确实谷歌搜索了太久了,一无所获.谢谢你的帮助 :)
我目前正在尝试找到一个不会让值超过某个值的解决方案,在本例中为0x1000(4096).这是一个简单的解决方案,但关键在于速度.
int someVal = rand();
for(int i = 0; i < 10000; i++)
{
if(someVal > 0x1000)
someVal = 0x1000;
cout << someVal;
someVal = rand();
}
Run Code Online (Sandbox Code Playgroud)
这太慢了,除非当然没有别的方法可以做到.感谢任何帮助,Hetelek.
我正在尝试使用Google AdMob SDK,并且包含所有信息以及它看起来有多简单,我实际上遇到了一些麻烦.
我正在学习本教程,但是我自己的项目(不是样本).我使用的是最新的iOS SDK(6.2.1).一切似乎都很好,但是当我向我添加"-ObjC"标志时Other Code Signing Flags,它会抛出一个错误:
(null):codesign:无效选项 - O.
现在,只有在我的越狱设备(iOS 6.0.1,第4代iPod)上尝试调试应用程序时才会发生这种情况.我接受了这个错误,因为我没有购买开发者许可证,但即使使用模拟器,我仍然遇到麻烦.
我现在将-ObjC标志添加回来Other Code Signing Flags,并使用iOS 6.0 iPhone simuilator进行编译和构建.一切都很好,它运行(没有代码).然后我添加#import "GADBannerView.h"到我的标题,并添加一个属性(@property (nonatomic) GADBannerView *bannerView;)以及@synthesize它.然后我将此代码添加到我的.m文件中:
- (void) viewDidLoad
{
[super viewDidLoad];
// ad setup
self.bannerView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];
self.bannerView.adUnitID = @"********"; // <- I have my correct one here.
self.bannerView.rootViewController = self;
[self.view addSubview:self.bannerView];
[self.bannerView loadRequest:[GADRequest request]];
}
Run Code Online (Sandbox Code Playgroud)
添加它设法抛出异常并在最后一行崩溃([self.bannerView loadRequest:[GADRequest request]];).完整的信息:
2012-12-25 23:33:00.392 NFL …Run Code Online (Sandbox Code Playgroud)