编译器runtime
1. 编译器不会强制程序员处理哪种异常
在java编译器中,是不会强制要求程序员进行处理Runtime异常的。
RuntimeException类及其子类的实例被称为运行时异常,即UnChecked Exception。
我们较为常见的NullPointerException(空指针异常)和 IndexOutOfBoundsException(数组越界异常),对于这些Runtime异常。
在java编译器中是不会强制要求程序员进行处理或声明的(有些IDE可能会给可能出现Runtime异常问题的提示,但不会报错)。
常见的RunTime异常几种如下:
NullPointerException - 空指针引用异常。
ClassCastException - 类型强制转换异常。
IllegalArgumentException - 传递非法参数异常。
ArithmeticException - 算术运算异常。
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常。
IndexOutOfBoundsException - 下标越界异常。
NegativeArraySizeException - 创建一个大小为负数的数组错误异常。
NumberFormatException - 数字格式异常。
SecurityException - 安全异常。
UnsupportedOperationException - 不支持的操作异常。
2. 编译环境有哪些
问题一:java的编译环境是什么 JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。
JDK包含的基本组件包括:
・javac C 编译器,将源程序转成字节码
・jar C 打包工具,将相关的类文件打包成一个文件
・javadoc C 文档生成器,从源码注释中提取文档
・jdb C debugger,查错工具
JDK中还包括完整的JRE(Java Runtime Environment,Java运行环境),也被称为private runtime。包括了用于产品环境的各种库类,以及给开发员使用的补充库,如国际化的库、IDL库。
JDK中还包括各种例子程序,用以展示Java API中的各部分。
从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。JDK的另一个显着特点是随着Java (J2EE、J2SE以及J2ME)版本绩升级而升级。但它的缺点也是非常明显的就是从事大规模企业级Java应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。
JDK一般有三种版本:
SE(J2SE),standard edition,标准版,是我们通常用的一个版本
EE(J2EE),enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序,
ME(J2ME),micro edtion,主要用于移动设备、嵌入式设备上的java应用程序
问题二:C语言的编译环境用哪个? 哪个不要脸的说TC 丢人
反而是有些垃圾用功能较强的编译工具
用TC,学会自己写函数 记住不要用中文的
那些说TC丢人的就是用的中文,英语都不懂还弄个毛编程
朋饥,我建议你坚持用TC2.0, 对新手最有帮助的!
问题三:c程序语言中的编译系统是什么?编译环境又什么什么? C语言代码是.C的文本文件。
需要用编译程序把.C文件翻译.OBJ,然后用连接程序再弄成.EXE文件。
编译程序就是那个把.C变成.OBJ的程序
编译环境就是把编译程序、连接程序以及其他一些方便程序员写程序的东西综合在
一起形成的一套系统,程序编译环境...
希望对你有帮助
问题四:C++编译软件和环境有哪些? 用DEV C++吧,我一直用这个
问题五:Renesas MCU的编译环境有哪些? 你可以登录官网查询
问题六:C++的编译器都有哪些啊?谢谢!!!! 编译器很多的:
Visual C++
GNU C++
Inter C++
Sun C++
clang
。。。。。
等等。
一般都用VC和GNU C++,其他的都是专业人士使用的。。。。
楼上的回答是复制互。。。。太NC
关于IDE,C++有很多,一些其他语言的IDE现在也支持C++了
给你介绍一些:
Visual Studio系列(目前最新版本是VS2013)
Dev C++(目前最新非官方版是Dev c++ 5.4.1)
Code Block
NetBeans
C-Free(貌似不好用)
。。。
问题七:编译程序与集成开发环境有什么不同?举例说ming 以下选自网络:
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。
换句话说,编译器只是集成开发环境的一部分。
比如最常见的集成开发环境:Visual Studio(其使用的编译器是cl(貌似今年会集成clang编译器))。
除cl外,比较常见的编译器还有gcc。
问题八:C++的开发环境有哪些?哪个C++的开发环境要好一些呢? c++builder 2010 最好用了。
初学者,最好不要去学VC鸡c++并身就难学了,还要来一个VC。
还是用c++builder,入门简单,上手容易,
但你C++用熟了,再去整VC事斗功倍,不听老人言,吃亏在眼前。
问题九:什么是集成开发环境? development SDK
就是写代码,编译,链接做在一个场件中的东东
比如VB.NET ,turbo C
你知道,从前编写程序不是这样的,通常需要你在记事本中把代码写好存盘,然后以这个文件为参数,运行编译程序,链接程序,最后才能生成可执行的机器代码
3. 什么是Runtime
runtime就是程序运行时的状态
还有一个compiletime,就是编译时代状态
程序设计中要避免runtime的错误,compiletime的错误由编译器检测。
4. microsoft visual c++是什么
Microsoft Visual C++(MSVC) 是 Microsoft 的C、C++和C++/CX编程语言的编译器。
MSVC 是专有软件;它最初是一个独立的产品,但后来成为Visual Studio的一部分,并以试用软件和免费软件的形式提供。它具有用于开发和调试C++ 代码的工具,尤其是为Windows API、DirectX和.NET编写的代码。
许多应用程序需要可再发行的 Visual C++ 运行时库包才能正常运行。这些包通常独立于应用程序安装,允许多个应用程序使用该包,而只需安装一次。这些 Visual C++ 可再发行包和运行时包主要是为许多应用程序使用的标准库安装的。
Visual C++以拥有语法高亮、IntelliSense(智能提示)以及高级调试功能而着称。比如,它允许用户进行远程调试,单步执行等。
还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加链接(link)着称。这些特征明显缩短程序编辑、编译及链接的时间花费,在大型软件项目上尤其显着。
工具链生态环境
1、Universal CRT (UCRT)包含了C99运行时库的函数与全局变量。UCRT现在是Windows component,随Windows 10安装。UCRT的静态库、DLL的导入库、头文件是Windows 10 SDK的一部分。
2、vcruntime库包含Visual C++ CRT实现相关的代码,如异常处理、调试支持、运行时检查、类型信息、实现细节与特定扩展库函数。 vcruntime库相关于特定编译器。
3、CRT初始化库处理进程启动(CRT startup)、内部的逐线程的初始化、终止。CRT初始化库相关于特定编译器。
4、对于本地代码与受管代码混合的情形,使用/clr编译选项,这会动态链接 UCRT与vcruntime,静态链接msvcmrt.lib或msvcmrtd.lib;svcmrt.lib或msvcmrtd.lib提供了受管代码与本地CRT之间的proxy。
5. iOS Runtime理解
runtime
概述: runtime又叫运行时,是一套底层C语言API,是iOS系统的核心之一。开发者在编码过程中,可以给任意一个对象发送消息,在编译阶段只是确定了要向接受着发送这条消息,而接受者如何响应和处理这条消息,就要看运行时来决定了
C语言中,在编译器就确定要调用哪个函数,而OC的函数,属于动态调用过程,在编译器并不能真正决定调用哪个函数,只有在真正的运行时才会根据函数的名称找到对应的函数来调用。OC是一个动态语言,这意味着它不仅要一个编译器,也需要一个运行时系统来动态创建类和对象、进行消息传递和发送
1.消息转发
Runtime的特性主要是消息传递,如果消息在对象中找不到,就进行转发。Objective-C是一个动态语言,这意味着它不仅需要一个编译器,也需要一个运行时系统来动态创建类和对象、进行消息传递和转发。Runtime的核心是消息传递。
(1)消息传递的过程
一个对象的方法[obj test],编译器转成消息发送objc_msgSend(obj,test),Runtime执行的流程是这样的
a.首先通过obj的isa指针找到它的class
b.在class的method list找test
c.如果class中没找到test,继续往它的superclass中找
d.一旦找到test这个函数,就去执行它的IMP
由于效率问题,每个消息都遍历一次objc_method_list并不合理,所以需要把经常被调用的函数缓存下来,去提高函数查询的效率。这也就是objc_class中另一个重要的成员objc_cache做的事情。找到test之后,将test的method_name作为key,method_imp作为value。当再次收到test消息的时候,可以直接在cache里找。
类对象(objc_class)
Objective-C类是由Class类型来表示的,它实际上是一个指向objc_class结构体的指针。struct objc_class结构体里面定义了很多变量。结构体里保存了指向父类的指针、类的名字(name)、版本、实例变量列表(ivars)、方法列表(methodLists)、缓存(cache)、遵守的协议列表(protocols),由此可见,类对象就是一个结构体struct objc_class,这个结构体存放的数据就是元数据
理解Runtime就是理解iOS在运行时他的数据存储以及他的类、实例、类对象、元类她们之间的关系和作用。
(2)消息转发机制
归根到底,Objective-C中所有的方法调用本质就是向对象发送消息
1.类中创建方法-(void)test
2.iOS系统为这个方法创建一个编号,SEL(test)并添加到方法列表里面
3.当调用这个方法的时候系统去方法列表里查找这个方法,找到了就执行
所以,调用一个方法就会进行一次发送消息也就是在这个类的方法列表里找,如果在该类中找不到就到该类的父类里找,如果父类还找不到就一直搜索到继承树的根部,如果找不到或者消息转发不成功那就会报unrecognized selector错。
1.动态方法解析
Objective-C运行时会调用+resolveInstanceMethod:或者 +resolveClassMethod:让你有机会提供一个函数实现,如果你添加了函数并且返回YES,那么运行时就会重新启动一次消息发送的过程。如下图:
虽然没有foo:的实现函数,但是通过class_addMethod()动态添加了fooMethod函数,并执行了这个函数并且打印成功。如果reslove返回NO运行时就会移到下一步:forwardingTargetSelector
2.直接消息转发
如果目标对象实现了forwardingTargetSelector,Runtime这时就会调用这个方法,给你把这个消息转发给其他对象的机会
从图中可以看出我们通过forwardingTargetForSelector方法将当前类的方法转给Father类实现了,打印成功。
3.完整消息转发
如果在上一步还不能处理未知消息,那唯一能做的就是启动消息转发机制。首先它会发送methodSignatureForSelector消息获得函数的参数和返回值类型。如果methodSignatureForSelector返回nil,Runtime则会发出doesNotRecognizeSelector。如果返回一个签名函数,Runtime就会创建一个NSInvocation对象并发送forwardInvocation消息给目标对象。
Runtime的实际应用
1.使用Runtime交换方法
2.动态添加方法(目前不是很懂)
3.给分类添加属性
4.消息转发(热更新)解决Bug(JSPatch)
6. 汇编编译器在win10环境下想编译,却说Runtime error 53找不到文件,咋办,
如果轴网是用创建轴线的对话框来创建的话,点右键 --选择-- 适合工作区域至整个模型,如果深度和显示过滤中设置正确,轴线应该显示出来 如果你拉的是单根轴线,确保在你拉单根轴线前已有建成的轴线,看看是不是你操作不正确。