我使用gcc(运行as g++)和GNU make.我使用gcc预编译头文件precompiled.h,创建precompiled.h.gch; Makefile中的以下行执行此操作:
# MYCCFLAGS is a list of command-line parameters, e.g. -g -O2 -DNDEBUG
precompiled.h.gch: precompiled.h
g++ $(MYCCFLAGS) -c $< -o $@
Run Code Online (Sandbox Code Playgroud)
一切都很好,直到我不得不运行g++不同的命令行参数.在这种情况下,即使precompiled.h.gch存在,也无法使用,编译速度会慢得多.在gcc文档中,我已经读过要处理这种情况,我必须创建一个目录precompiled.h.gch并将预编译的头文件放在那里,每个g++命令行参数都有一个文件.
所以现在我想知道我应该如何改变我的Makefile以告诉我用g++这种方式创建gch文件.也许我可以运行g++只是为了测试它是否可以使用precompiled.h.gch目录中的任何现有文件,如果没有,则生成具有唯一文件名的新预编译头.
gcc是否支持进行此类测试?
也许我可以用另一种方式实现我想要的东西?
是否有适用于.NET的简易库来安装虚拟驱动器?
我需要在虚拟驱动器中安装存档,并且很可能使用虚拟文件系统.
存档格式不支持文件夹,因此我需要从存档中手动提供文件和文件夹.也不支持属性,但我使用元数据文件来存储它们.
我对驱动器和FS的控制越多越好.
我搜索了互联网和stackoverflow.com,但什么也没得到.
谁可以给我比较各种Prolog编译器/ IDE,如Visual Prolog和SWI-Prolog?
提前致谢!
#include <iostream>
int main()
{
int array1[10] = {0};
char* array2[10] = {'\0'};
for (int i = 0; i <= 100; i++)
{
std::cout << array1[i]; // This does not crash
//std::cout << array2[i]; // This crashes
array1[i]; // Wont crash here
array2[i]; // nor here, Why? because there is no cout??
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
好的,对于在这里回答的人,我知道我故意为阵列做了一个溢出.那么为什么程序会在"cout"上崩溃,而不是其他?
谢谢!
我只是一个初出茅庐的程序员,至少尝试编程而不是最好的情况.我一直在阅读Herb Sutter的"Exceptional C++",并且到目前为止已经完成了三次异常安全章节.然而,除了他提出的一个例子(一个堆栈),我不确定我应该在什么时候努力争取异常安全与速度以及何时这样做是非常愚蠢的.
例如,我目前的家庭作业项目是一个双重链接列表.由于我已经编写了其中的几个,我想花时间深入研究一些更深层次的概念,比如ES.
这是我的pop-front功能:
void List::pop_front()
{
if(!head_)
throw std::length_error("Pop front: List is empty.\n");
else
{
ListElem *temp = head_;
head_ = head_->next;
head_->prev = 0;
delete temp;
--size_;
}
}
Run Code Online (Sandbox Code Playgroud)
我有一些困境.
1)当列表失败时,我真的应该抛出错误吗?我不应该简单地做什么并返回而不是强迫列表的用户执行try {] catch(){}语句(这也很慢).
2)有多个错误类(加上我的老师要求我们在类中实现的ListException).自定义错误类对于这样的事情是否真的是必需的,并且是否有关于何时使用特定异常类的一般指导?(例如,范围,长度和边界都相似)
3)我知道我不应该更改程序状态,直到抛出异常的所有代码都完成.这就是我最后减小size_的原因.这个简单的例子真的有必要吗?我知道删除不能扔.分配给0时头_-> prev是否可能抛出?(头是第一个节点)
我的push_back函数:
void List::push_back(const T& data)
{
if(!tail_)
{
tail_ = new ListElem(data, 0, 0);
head_ = tail_;
}
else
{
tail_->next = new ListElem(data, 0, tail_);
tail_ = tail_->next;
}
++size_;
}
Run Code Online (Sandbox Code Playgroud)
1)我经常听到C++程序中的任何事情都会失败.测试ListElem的构造函数是否失败(或者在执行期间是tail_ new)是否现实?
2)是否有必要测试数据类型(目前很简单,typedef int T …
在java.lang.reflect,人们会这样做:
Field someField = ...;
Class<?> fieldType = someField.getType();
Run Code Online (Sandbox Code Playgroud)
但是,我该怎么做用javax.lang.model的VariableElement(这可能会或可能不会代表一个字段)?相应的返回值将是(我猜)TypeElement.
VariableElement someField = ...;
TypeElement fieldType = someField.???;
Run Code Online (Sandbox Code Playgroud)
那么,在javax.lang.model,如何获得TypeElement字段的类型(或),由VariableElement?表示?
顺便说一下,没有一个适合javax.lang.model的Stackoverflow标签;)
我对WebSockets的前景感到非常兴奋.由于我过去已经构建了一些基于桌面插槽的游戏和Web游戏,所以我热衷于将这两种方法结合起来构建基于Web的多人游戏而不需要长时间的轮询黑客攻击.
由于安全问题导致Firefox和Opera禁用了websockets的消息(见此处),是不是将来WebSockets的终结?
如果WebSockets确实已经死亡(或在可预见的未来推迟),除了Long Polling之外还有其他选择吗?
我有两个加权DAG(有向非循环图)并需要将它们合并为一个,所以我可以得到一个拓扑排序(在某些情况下它可能超过两个).问题是图表各自都是非循环的,但可以一起形成一个循环.此外,图形很大(100k +节点,500k +边缘).有没有一种聪明的方法来合并图表?同样好的将是一次"一次"遍历所有图形的算法.
编辑:
通过"合并",我的意思是将两个图形的所有边和顶点组合在一起(当然保留权重),如果它们不创建周期的话.如果边缘已经存在,我想为它使用更大的权重.
这个想法是从两个非循环图开始应该比以后简单地"修复"结果更有优势(这意味着找到NP难以反馈的弧集,所以我想避免这种情况).
谢谢你的建议.
在阅读谷歌如何运作时遇到了"鸽子计算"一词.有人可以详细说明这个吗?..鸽子真的被使用还是我遗失了什么?..鸽子在搜索引擎设计中必须做些什么? ?
我查看了developer.android.com并搜索了相当多的内容,但我似乎无法找到一个布局对象来执行此操作:一个语音气泡类似于其中包含按钮列表的东西,可能是如果不是所有按钮都适合屏幕宽度,则可滚动.Twitter应用程序,Handcent SMS和HTC的Sense消息应用程序都使用它,它们在所有这些中看起来或多或少相同,这使我认为它是一个标准对象.下面的图片来自Handcent.他们在用什么?
