多年前我相信C与C++相比绝对纯净,因为编译器无法生成任何你无法预测的代码.我现在相信反例包括volatile关键字和内存障碍(在多处理器编程或内存映射硬件设备的设备驱动程序中,其中普通汇编语言甚至比C编译器的优化更纯粹).
目前我正在尝试枚举C++编译器可以执行的不可预测的事情.关于C++的主要抱怨是编译器将隐式实例化临时对象,但我相信这些情况都可以预期.我正在考虑的案例是:
explicit关键字operator ()还有其他人吗?
在询问了不同的人并且没有任何人提供我称之为"至少有点具体的答案"之后,我一直想知道一段时间:
题:
在iPhone应用程序中,应用程序应该保留对其模型类的引用(使用MVC方法)吗?
在iPhone(和Cocoa)应用程序中,我们称之为"App Delegate",它基本上启动了我们的应用程序,并且在我们的控制器中,也处理UITouch事件.
App委托控制器也是如此?模特班?这两个都没有?我想不知道这也让人知道在哪里放置模型参考资料令人困惑.
例:
您有Application Delegate,该委托包含对Application的View Controller的引用.如果我的应用程序将使用模型类A(它是一个Web服务器守护程序类),并使用一个存储该Web服务器查询的数据的类B.
你们在哪里存储对A和B的引用?(App Delegate?查看控制器?两者?)
这里有很多选项,但作为一个例子,我真的想知道你们如何使用mvc组合这个只使用一个View的应用程序.
我正在构建一个使用System.IO.File.Copy(...)函数复制文件的服务器应用程序.我的文件可能相当大,因此,如果机器崩溃,它很有可能在复制期间发生.
重新启动服务后,我应该能够获取复制任务并继续.如何检测服务器崩溃是否成功完成或中断了副本?
我目前的计划是将文件复制到临时名称,复制完成后将其重命名为最终名称.这样,文件命名能够在崩溃时携带状态信息.
你有什么好的/更好的建议吗?
编辑:目标操作系统是Win2003,因此事务NTFS不可用
我可以理解void**在记忆中看起来如何,但我想知道我是否正确使用它.我在下面描述的是否有任何根本缺陷?例如,虽然我可以说"它对我有用",但我是否以某种方式创建了错误/不可移植的代码?
所以我有一个小行星克隆.有三个实体可以发射子弹,即玩家(SHIP *player_1,SHIP *player_2)和UFO(UFO *ufo).当子弹被射击时,重要的是要知道谁射了子弹; 如果它是一名球员,当它击中某些东西时,他们的分数需要增加.因此,子弹将存储它所属的实体类型(owner_type)以及直接指向所有者(owner)的指针:
enum ShipType
{
SHIP_PLAYER,
SHIP_UFO
};
typedef struct Bullet
{
// ...other properties
enum ShipType owner_type;
void **owner;
} BULLET;
Run Code Online (Sandbox Code Playgroud)
然后,当玩家点击按钮或UFO看到目标时,将调用以下功能之一:
void ship_fire(SHIP **shipp)
{
BULLET *bullet = calloc(1, sizeof(BULLET));
bullet->owner_type = SHIP_PLAYER;
bullet->owner = (void**)shipp;
// do other things
}
void ufo_fire(UFO **ufop)
{
BULLET *bullet = calloc(1, sizeof(BULLET));
bullet->owner_type = SHIP_UFO;
bullet->owner = (void**)ufop;
// do other things
}
Run Code Online (Sandbox Code Playgroud)
......他们可能被称为,例如,像这样: …
我有一个包含以下内容的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<job xmlns="http://www.sample.com/">programming</job>
Run Code Online (Sandbox Code Playgroud)
我需要一种方法来提取<job..> </job>标签中的内容,在这种情况下是programmin.这应该在linux命令提示符下完成,使用grep/sed/awk.
希望有人可以帮助我调试此问题,因为EXC_BAD_ACCESS是我收到的唯一错误.我也试过打开NSZombieEnabled,但是到目前为止我还没有得到更多信息.
问题.我有四个实体:
A - > B - > C - > D.
箭头表示集合的位置:"A"包含与"B"的多对多关系,"B"与"C"等的多对多关系.对于创建实体,我使用:
id dto = [NSEntityDescription insertNewObjectForEntityForName:@"A"
inManagedObjectContext:context];
NSLog(@"DTO: %@", dto);
Run Code Online (Sandbox Code Playgroud)
这似乎适用于A,B和C.但是,当在实体D上使用它时,应用程序崩溃了EXC_BAD_ACCESS.访问对象时似乎发生了这个问题,因为当注释掉NSLog和访问dto-object的其他方法时程序运行成功.
控制台输出
GNU gdb 6.3.50-20050815 (Apple version gdb-1346) (Fri Sep 18 20:40:51 UTC 2009)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no …Run Code Online (Sandbox Code Playgroud) 现在,作为一名C#程序员,我知道泛型很棒.但是,当涉及到某些VB.NET时,我发现以下内容不会导致编译器错误:
Dim instance As List(Of Integer)
instance.Add(True)
Run Code Online (Sandbox Code Playgroud)
为什么是这样?我知道你不需要使用VB.NET,但我认为这会杀死使用泛型的主要原因 - 类型安全.
编辑:我没有严格的选项,因为这不是一个真正的编程练习,只是我在理论上看一下VB.NET.这是一个理论问题,因为我期望它甚至在选项严格关闭时导致编译器错误,就像泛型类型的一个特性一样.
我有一个共享库项目,它由4个静态库(.a)和一个object(.o)文件构成.我正在尝试添加-fvisibility=hidden选项以将输出中的符号限制为仅使用__attribute__在源中标记的符号.
我已经-fvisibility=hidden为.so项目的编译选项(包括.o文件)和项目添加了选项.a.
目标文件中的符号将按照预期从最终中删除.so.但是,.a项目中的符号仍然在最终.so文件中.将-fvisibility=hidden选项添加到.solink命令无效.
我究竟做错了什么?
我的目的是从.so除了接口函数之外的所有符号中删除库.
编辑:我实际上使用版本地图来解决这个问题.但是,随着外部符号的更改,它需要继续维护版本脚本.接受的答案有更好的主意.
我有一个我在Grails项目中使用的外部java库.它需要通过Spring配置的DataSource.但是,dataSource似乎无法从resources.groovy访问.我如何获得它?我在resources.groovy中使用以下内容:
beans = {
eventDao(com.JavaClassRequiringDataSource) {
//dataSource = ref(dataSource, true)
dataSource = dataSource
}
}
Run Code Online (Sandbox Code Playgroud)
运行应用程序会导致异常:
org.codehaus.groovy.runtime.InvokerInvocationException:groovy.lang.MissingPropertyException:没有这样的属性:class的dataSource:grails.spring.BeanBuilder
有任何想法吗?