oc编译器成再编译
❶ 系统是怎么编译的 一般软件都是用开发语言写代码, 然后再用编译器编译成文件。 但是按我目前的认识
网络
卧薪尝胆历史故事
shate3 | 2012-06-23 | 分享
作业不会,学霸帮你立即下载
我来解答
推荐回答
吴王阖闾打败楚国,成了南方霸主。吴国跟附近的越国(都城在今浙江绍兴)素来不和。公元前496年,越国国王勾践即位。吴王趁越国刚刚遭到丧事,就发兵打越国。吴越两国在槜李(今浙江嘉兴西南,槜音zuì)地方,发生一场大战。
吴王阖闾满以为可以打赢,没想到打了个败仗,自己又中箭受了重伤,再加上上了年纪,回到吴国,就咽了气。
吴王阖闾死后,儿子夫差即位。阖闾临死时对夫差说:"不要忘记报越国的仇。"夫差记住这个嘱咐,叫人经常提醒他。他经过宫门,手下的人就扯开了嗓子喊:"夫差!你忘了越王杀你父亲的仇吗?"
夫差流着眼泪说:"不,不敢忘。"他叫伍子胥和另一个大臣伯嚭(音pǐ)操练兵马,准备攻打越国。过了两年,吴王夫差亲自率领大军去打越国。越国有两个很能干的大夫,一个叫文种,一个叫范蠡(音lí)。范蠡对勾践说:"吴国练兵快三年了。这回决心报仇,来势凶猛。咱们不如守住城,不要跟他们作战。"
勾践不同意,也发大军去跟吴国人拼个死活。两国的军队在大湖一带打上了。越军果然大败。越王勾践带了五千个残兵败将逃到会稽,被吴军围困起来。勾践弄得一点办法都没有了。他跟范蠡说:"懊悔没有听你的话,弄到这步田地。现在该怎么办?"
范蠡说:"咱们赶快去求和吧。"勾践派文种到吴王营里去求和。文种在夫差面前把勾践愿意投降的意思说了一遍。吴王夫差想同意,可是伍子胥坚决反对。
文种回去后,打听到吴国的伯嚭是个贪财好色的小人,就把一批美女和珍宝,私下送给伯嚭,请伯嚭在夫差面前讲好话。经过伯嚭在夫差面前一番劝说,吴王夫差不顾伍子胥的反对,答应了越国的求和,但是要勾践亲自到吴国去。
文种回去向勾践报告了。勾践把国家大事托付给文种,自己带着夫人和范蠡到吴国去。勾践到了吴国,夫差让他们夫妇俩住在阖闾的大坟旁边一间石屋里,叫勾践给他喂马。范蠡跟着做奴仆的工作。夫差每次坐车出去,勾践就给他拉马,这样过了两年,夫差认为勾践真心归顺了他,就放勾践回国。
勾践回到越国后,立志报仇雪耻。他唯恐眼前的安逸消磨了志气,在吃饭的地方挂上一个苦胆,每逢吃饭的时候,就先尝一尝苦味,还自己问:"你忘了会稽的耻辱吗?"他还把席子撤去,用柴草当作褥子。这就是后来人传诵的"卧薪尝胆"。
丢来了 | 2012-06-23
1700
500
网络知道
作业帮
宝宝知道
今日头条
言情小说
91助手
女生秘密
汽车报价
秀美甲
LBE安全
酷狗音乐
美摄
相关问题
卧薪尝胆类似的历史故事65
从卧薪尝胆这个历史故事中大家明白了什么?121
“卧薪尝胆”这个成语讲的什么历史故事?217
卧薪尝胆的历史故事614
卧薪尝胆简要的历史故事431
<<卧薪尝胆>>这篇历史故事,主要写了什么3
卧薪尝胆是寓言故事还是历史故事?急!!!!71
更多相关问题>>
用作业帮一键提问“卧薪尝胆...”问题
回答
卧薪尝胆
两千多年前,在长江下游有两个国家,一个是吴国,一个是越国。他们都想征服对方,使自己的国家强大起来。
会稽一战,越国打了败仗。越王勾践万般无奈,只好派人向吴王夫差求和,表示愿意和夫人一起去吴国,给吴王当奴仆。吴王的谋臣纷纷要求灭掉越国,免除后患。得胜的吴王非常骄傲,不听大家的建议,答应了勾践的请求。
勾践夫妇来到吴国,穿上了粗布衣,住进了石头房,给吴王养马驾车,舂米推磨,受尽了屈辱。他们在吴国整整干了三年,才回到自己的国家。
回国以后,越王勾践时刻不忘报仇雪恨。白天,他亲自下田耕种;晚上,就睡在柴草上。他还在屋里挂了一只苦胆,每顿饭前,总是要先尝尝它的苦味,提醒自己时刻不忘兵败会稽的耻辱。
经过二十多年的努力,越国终于转弱为强,出奇兵灭掉了吴国。
可爱小黎 | 2012-11-12
366
95
公元前496年,吴王派兵攻打越国,被越王勾践打得大败,吴王也受了重伤,临死前,嘱咐儿子夫差要替他报仇。夫差牢记父亲的话,日夜加紧练兵,准备攻打越国。 过了两年,夫差率兵把勾践打得大败,勾践被包围,无路可走,准备自杀。这时谋臣文种劝住了他,说:“吴国大臣伯喜否贪财好色,可以派人去贿赂他。”勾践听从了文种的建议,就派他带着珍宝贿赂伯喜否,伯喜否答应和文种去见吴王。 文种见了吴王,献上珍宝,说:“越王愿意投降,做您的臣下伺候您,请您能饶恕他。”伯喜否也在一旁帮文种说话。伍子胥站出来大声反对道:“人常说‘治病要除根’,勾践深谋远虑,文种、范蠡精明强干,这次放了他们,他们回去后就会想办法报仇的!”这时的夫差以为越国已经不足为患,就不听伍子胥的劝告,答应了越国的投降,把军队撤回了吴国。 吴国撤兵后,勾践带着妻子和大夫范蠡到吴国伺候吴王,放牛牧羊,终于赢得了吴王的
❷ C语言代码怎么编译成.o文件再怎么变成.exe文件
linux下gcc -c wen.c -o wen.o 生成.o文件gcc wen.o -o wen 就变成.exe文件
❸ 只有oc渲染器才有节点编辑器吗C4D自带的渲染器里有没有节点编辑器
C4D r21版本出的ProRender渲染器是有节点编辑器的,可以做PBR材质,标准和物理渲染器是没有的。 另外,除了oc渲染器还有redshift、arnold等外置渲染器也都是节点编辑模式。
❹ objective-c和Cpp怎么混合编程
Using C++ With Objective-C
苹果的Objective-C编译器允许用户在同一个源文件里自由地混合使用C++和Objective-C,混编后的语言叫Objective-C++。有了它,你就可以在Objective-C应用程序中使用已有的C++类库。
Objective-C和C++混编的要点
在 Objective-C++中,可以用C++代码调用方法也可以从Objective-C调用方法。在这两种语言里对象都是指针,可以在任何地方使用。例 如,C++类可以使用Objective-C对象的指针作为数据成员,Objective-C类也可以有C++对象指针做实例变量。下例说明了这一点。
注意:Xcode需要源文件以".mm"为扩展名,这样才能启动编译器的Objective-C++扩展。
/* Hello.mm
* Compile with: g++ -x objective-c++ -framework Foundation Hello.mm -o hello
*/
#import <Foundation/Foundation.h>
class Hello {
private:
id greeting_text; // holds an NSString
public:
Hello() {
greeting_text = @"Hello, world!";
}
Hello(const char* initial_greeting_text) {
greeting_text = [[NSString alloc] initWithUTF8String:initial_greeting_text];
}
void say_hello() {
printf("%s\n", [greeting_text UTF8String]);
}
};
@interface Greeting : NSObject {
@private
Hello *hello;
}
- (id)init;
- (void)dealloc;
- (void)sayGreeting;
- (void)sayGreeting:(Hello*)greeting;
@end
@implementation Greeting
- (id)init {
if (self = [super init]) {
hello = new Hello();
}
return self;
}
- (void)dealloc {
delete hello;
[super dealloc];
}
- (void)sayGreeting {
hello->say_hello();
}
- (void)sayGreeting:(Hello*)greeting {
greeting->say_hello();
}
@end
int main() {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
Greeting *greeting = [[Greeting alloc] init];
[greeting sayGreeting]; // > Hello, world!
Hello *hello = new Hello("Bonjour, monde!");
[greeting sayGreeting:hello]; // > Bonjour, monde!
delete hello;
[greeting release];
[pool release];
return 0;
}
正如你可以在OC接口中声明C结构一样,你也可以在OC接口中声明C++类。跟C结构一样,OC接口中定义的C++类是全局范围的,不是OC类的内嵌类(这与标准C(尽管不是C++)提升嵌套结构定义为文件范围是一致的)。
为了允许你基于语言变种条件化地编写代码,OC++编译器定义了__cplusplus和__OBJC__预处理器常量,分别指定C++和OC。 如前所述,OC++不允许C++类继承自OC对象,也不允许OC类继承自C++对象。
class Base { /* ... */ };
@interface ObjCClass: Base ... @end // ERROR!
class Derived: public ObjCClass ... // ERROR!
与 OC不同的是,C++对象是静态类型的,有运行时多态是特殊情况。两种语言的对象模型因此不能直接兼容。更根本的,OC和C++对象在内存中的布局是互不 相容的,也就是说,一般不可能创建一个对象实例从两种语言的角度来看都是有效的。因此,两种类型层次结构不能被混合。
你可以在OC类内部声明C++类,编译器把这些类当作已声明在全局名称空间来对待。就像下面:
@interface Foo {
class Bar { ... } // OK
}
@end
Bar *barPtr; // OK
OC允许C结构作为实例变量,不管它是否声明在OC声明内部。
@interface Foo {
struct CStruct { ... };
struct CStruct bigIvar; // OK
} ... @end
Mac OS X 10.4以后,如果你设置fobjc- call-cxx-cdtors编译器标志,你就可以使用包含虚函数和有意义的用户自定义零参数构造函数、析构函数的C++类实例来做为实例变量 (gcc-4.2默认设置编译器标志fobjc-call-cpp-cdtors)。OC成员变量alloc完以后,alloc函数会按声明顺序调用构造 器。构造器使用公共无参数恰当的构造函数。OC成员变量dealloc之前,dealloc方法按声明顺序反序调用调用析构函数。 OC没有名称空间得概念。不能在C++名称空间内部声明OC类,也不能在OC类里声明名称空间。
OC类,协议,分类不能声明在C++ template里,C++ template也不能声明在OC接口,协议,分类的范围内。
但是,OC类可以做C++ template的参数,C++ template参数也可以做OC消息表达式的接收者或参数(不能通过selector)。
C++词汇歧义和冲突
OC头文件中定义了一些标识符,所有的OC程序必须包含的,这些标识符识id,Class,SEL,IMP和BOOL。
OC方法内,编译器预声明了标识符self和super,就想C++中的关键字this。跟C++的this不同的是,self和super是上下文相关的;OC方法外他们还可以用于普通标识符。
协议内方法的参数列表,有5个上下文相关的关键字(oneway,in,out,inout,by)。这些在其他内容中不是关键字。
从 OC程序员的角度来看,C++增加了不少新的关键字。你仍然可以使用C++的关键字做OC selector的一部分,所以影响并不严重,但你不能使用他们命名OC类和实例变量。例如,尽管class是C++的关键字,但是你仍然能够使用 NSObject的方法class:
[foo class]; // OK
然而,因为它是一个关键字,你不能用class做变量名称:
NSObject *class; // Error
OC里类名和分类名有单独的命名空间。@interface foo和@interface(foo)能够同时存在在一个源代码中。OC++里,你也能用C++中的类名或结构名来命名你的分类。
协议和template标识符使用语法相同但目的不同:
id<someProtocolName> foo;
TemplateType<SomeTypeName> bar;
为了避免这种含糊之处,编译器不允许把id做template名称。 最后,C++有一个语法歧义,当一个label后面跟了一个表达式表示一个全局名称时,就像下面:
label: ::global_name = 3;
第一个冒号后面需要空格。OC++有类似情况,也需要一个空格:
receiver selector: ::global_c++_name;
限制
OC++ 没有为OC类增加C++的功能,也没有为C++类增加OC的功能。例如,你不能用OC语法调用C++对象,也不能为OC对象增加构造函数和析构函数,也不 能将this和self互相替换使用。类的体系结构是独立的。C++类不能继承OC类,OC类也不能继承C++类。另外,多语言异常处理是不支持的。也就 是说,一个OC抛出的异常不能被C++代码捕获,反过来C++代码抛出的异常不能被OC代码捕获。
❺ OC代码怎么写音乐编译器
写一个简单的?
还是什么的
分好少,加点分,我可以给你写个dome
❻ 我使用xcode编写c++,怎么生成exe文件
不能在win下运行,两者可执行文件的结构不一样,运行机制也不一样,如果使用xcode编写的软件是纯c++代码,没有oc的代码,没有使用系统相关api、mac的类库等等,在win下可以重新编译成win执行文件。xcode工程不能在vb里打开。
❼ oc 编译器生成的setter 和 getter方法,什么时候生成的
可以完全不重写这两个方法,但是当你习惯了用这两个方法后你会发现能极大的简化代码
比如你的类里面有个label,然后你再定义一个公开属性lableColor来获取这个label字体的颜色
如果不用get方法的情况下,每当label的字体颜色有变化你都要给lableColor赋值一次,这样才能保证获取到的颜色的是对的,但是如果你重写了lableColor 的get方法,只要return [label.textcolor];全部搞定
❽ 在VC++6.0里如何使用命令行标记将C++编译器变成C编译器
命令行?
我只知道有个
extern "C"{}.你完全可以将代码写进去.
❾ xcode 如何编译
Xcode 常用编译选项设置
在xcconfig文件中指定即可。
用标准库连接
LINK_WITH_STANDARD_LIBRARIES = YES如果激活此设置,那么编译器在链接过程中会自动使用通过标准库的链接器。
Info.plist 输出编码
INFOPLIST_OUTPUT_FORMAT = binary指定Info.plist文件的输出编码(默认情况下,输出与输入的编码保持不变),这个输出编码能指定“binary”或者“XML”。
生 成调试符号GCC_GENERATE_DEBUGGING_SYMBOLS = NO当启用的时候,详情等级能够通过build的’Level of Debug Symbols’设置去控制。 隐藏内联方法GCC_INLINES_ARE_PRIVATE_EXTERN = YES Objective-C GCGCC_ENABLE_OBJC_GC = Unsupported 优化级别GCC_OPTIMIZATION_LEVEL = Fastest, Smallest [-OS]
None: 不做优化使用这个设置,编译器的目标是减少编译成本,使调试产生预期的结果。
Fast:优化编译将为大函数占用更多的时间和内存使用这个设置,编译器将尝试减少代码的大小和执行时间,不进行任何优化,需要大量编译时间。
Faster:编译器执行几乎所有支持的优化,它不考虑空间和速度之间的平衡与“Fast”设置相比,该设置会增加编译时间和生成代码的性能。编译器不进行循环展开、内联函数和寄存器变量的重命名。
Fastest:开启“Faster”支持的所有的优化,同时也开启内联函数和寄存器变量的重命名选项
Fastest,smallest:优化代码大小这个设置启用“Faster”所有的优化,一般不增加代码大小,它还执行旨在减小代码大小的进一步优化。
C 语言方言GCC_C_LANGUAGE_STANDARD = C89 警告 检查Switch语句GCC_WARN_CHECK_SWITCH_STATEMENTS = YES 隐藏局部变量GCC_WARN_SHADOW = YES 隐式转换成32位的类型GCC_WARN_64_TO_32_BIT_CONVERSION = YES 未完成的Objective-C协议GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = YES 抑制所有的警告GCC_WARN_INHIBIT_ALL_WARNINGS = NO 初始化时没有完整的括号GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES例子(a没有完全的括号,b有):
int a[ 2 ][ 2 ] = { 0, 1, 2, 3 };
int b[ 2 ][ 2 ] = { { 0, 1 }, { 2, 3 } };
不匹配的返回类型
GCC_WARN_ABOUT_RETURN_TYPE = YES 缺少括号GCC_WARN_MISSING_PARENTHESES = YES例子:
{
if( a )
if( b )
foo();
else
bar();
}
{
if( a )
{
if( b )
foo();
else
bar();
}
}
在结构体初始化时缺少字段
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES
缺 少函数原型GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES 在文件结尾缺少新行GCC_WARN_ABOUT_MISSING_NEWLINE = YES 选择了多个定义的类型(@Selector)GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR = NO 严格的Selector匹配GCC_WARN_STRICT_SELECTOR_MATCH = YES 把缺少函数原型当作错误GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES 把所有的警告当作错误GCC_TREAT_WARNINGS_AS_ERRORS = YES 未定义的SelectorGCC_WARN_UNDECLARED_SELECTOR = YES 未初始化的自动变量GCC_WARN_UNINITIALIZED_AUTOS = YES 未知的Pragma指令GCC_WARN_UNKNOWN_PRAGMAS = YES 未使用的函数GCC_WARN_UNUSED_FUNCTION = YES 未使用的标签GCC_WARN_UNUSED_LABEL = YES 未使用的参数GCC_WARN_UNUSED_PARAMETER = YES 未使用的值GCC_WARN_UNUSED_VALUE = YES当一个语句计算的结果显式的未使用的时候发出警告 未使用的变量GCC_WARN_UNUSED_VARIABLE = YES 警告-所有过时的函数GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES offsetof宏未定义使用的警告GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = YES
iphone 常用的<app>-info.plist设置
Application requires iPhone environment如 果应用程序不能在ipod touch上运行,设置此项为true;
Application uses Wi-Fi如果应用程序需要wi-fi才能工作,应该将此属性设置为true。这么做会提示用户,如果没有打开wi-fi的话,打开wi-fi。为了节省 电力,iphone会在30分钟后自动关闭应用程序中的任何wi-fi。设置这一个属性可以防止这种情况的发生,并且保持连接处于活动状态
Bundle display name这用于设置应用程序的名称,它显示在iphone屏幕的图标下方。应用程序名称限制在10-12个字符,如果超出,iphone将缩写名 称。
Bundle identifier这个为应用程序在iphone developer program portal web站点上设置的唯一标识符。(就是你安装证书的时候,需要把这里对应修改)。
Bundle version这个会设置应用程序版本号,每次部署应用程序的一个新版本时,将会增加这个编号,在app store用的。
Icon already includes gloss and bevel effects默认情况下,应用程序被设置了玻璃效果,把这个设置为true可以阻止这么做。
Icon file(这个不用多说了)设置应用程序图标的。
Main nib file base name应用程序首次启动时载入的xib文件 这个基本用不到。
Initial interface orientation 确定了应用程序以风景模式还是任务模式启动
Localizations多语言。应用程序本地化的一列表,期间用逗号隔开,例如 应用程序支持英语 日语,将会适用 English,Japanese. Status bar is initially hidden 设置是否隐藏状态栏。你懂的。
Status bar style选择三种不同格式种的一种。
URL types应用程序支持的url标识符的一个数组。
用URL Scheme进行程序跳转
打开info.plist,添加一项URL types
展开URL types,再展开Item1,将Item1下的URL identifier修改为URL Scheme
展开URL Scheme,将Item1的内容修改为myapp
其他程序可通过myapp://访问此自定义URL
参考:http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
IOS后台播放音乐
OS后台播放只是在IOS4.0以后的版本支持。
1,设置后台播放会话
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setActive:YES error:nil];
[session setCategory: error:nil];
2,在info.plist里面添加
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
静态库没法包含category/分类?
如果你导入一个objc静态库,发现很多objc的category 不能调用,可以尝试在主工程中加入linker选项:
-all_load 加入这个一般就够了
-ObjC
让程序最小化再开启时,从头开始:
按下 “Home” 键以后程序可能并没有退出而是转入了后台运行。如果您想让应用直接退出,最简单的方法是:在 info-plist 里面找到 Application does not run in background 一项,勾选即可。
程序退出后任务栏还是有图标,但是程序原来的所有运行状态全部丢失,点击任务栏图标也不过相当于再次启动程序;如果允许后台运行,点击任务栏图标后会恢复程序中断时的界面。
本地化字符串:
在infoPlist.strings里面写
“string1″=”水果”
代码里面写 myLabel.text = NSLocalizedString(@”string1″, nil);
本地化的Bundle display name:
1)创建一个空文件,取名为InfoPlist.strings
2)对InfoPlist.strings进行本地化(Get Info -> Make Localization),然后设置需要的语言(如中文zh)
3)编辑不同的InfoPlist.strings文件,设置显示名字
CFBundleDisplayName = “名字”;
4)(这步不做貌似也可以)编辑Info.plist,添加一个新的属性Application has localized display name, 设置其类型为boolean,并将其value设置为选中状态
default图片的衔接问题:
程序开始后,手动加载default图片,然后进行过渡效果即可。
遍历目录:
NSString *appDocDir = [[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] relativePath];NSArray *contentOfFolder = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:appDocDir error:NULL];for (NSString *aPath in contentOfFolder) { NSLog(@"apath: %@", aPath); NSString * fullPath = [appDocDir :aPath]; BOOL isDir; if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath isDirectory:&isDir] && !isDir) { [fileList addObject:aPath]; }}
IB:
不论写不写property的retain,由IBOutlet都会为对象加一个retainCount,所以只要连接了,就需要在viewDidUnload与dealloc中release并适当置为nil。
预先在IB里面加载好的文件(比如图片),即使释放了Controller,IB中的文件也不会被释放,直至内存警告,解决办法是较大的资源用代码加载。
UIWebView:
用代码加载UIWebView的内容,navigationType是UIWebViewNavigationTypeOther
CAAnimation:
一定要记得[self.view.layer removeAllAnimations];因为CAAnimation会retain它的delegate
设备型号识别,可通过审核:
+ (NSString*)getDeviceVersion{ size_t size; sysctlbyname("hw.machine", NULL, &size, NULL, 0); char *machine = (char*)malloc(size); sysctlbyname("hw.machine", machine, &size, NULL, 0); NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding]; free(machine); return platform;}
输出:
//@”iPad1,1″
//@”iPad2,1″
//@”i386″
逗号后面数字解释:(i386是指模拟器)
1-WiFi版
2-GSM/WCDMA 3G版
3-CDMA版
AppleTV(2G) (AppleTV2,1)
iPad (iPad1,1)
iPad2,1 (iPad2,1)Wifi版
iPad2,2 (iPad2,2)GSM3G版
iPad2,3 (iPad2,3)CDMA3G版
iPhone (iPhone1,1)
iPhone3G (iPhone1,2)
iPhone3GS (iPhone2,1)
iPhone4 (iPhone3,1)
iPhone4(vz) (iPhone3,3)iPhone4 CDMA版
iPhone4S (iPhone4,1)
iPodTouch(1G) (iPod1,1)
iPodTouch(2G) (iPod2,1)
iPodTouch(3G) (iPod3,1)
iPodTouch(4G) (iPod4,1)
判断ipad/iphone
12UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPadUI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone
或者
1[[[UIDevice currentDevice] model] isEqualToString:@"iPad"];
判断设备是否有摄像头
1[UIImagePickerController isSourceTypeAvailable:];