当前位置:首页 » 编程软件 » 预编译是在哪里完成的

预编译是在哪里完成的

发布时间: 2022-04-18 05:25:36

A. 初学c语言时,输入程序后运行,是执行还是预编译预编译是什么为什么最开始要有#include如

预编译是把一个工程中较稳定的代码预先编译好放在一个文件里.这些预先编译好的代码可以是任何的C/C++代码。而输入程序后的运行,只是将代码编译成了obj(object)文件,所有obj文件经链接(link)成为可执行文件。而你说的执行,应该就是点击最后生成的.exe文件了。开始要有的#include,是表明要包含的头文件,或者其它的保存的代码文件。只有这样,你才可以引用到那个文件中的代码,来供目前的文件来使用。
至于你说的什么大型游戏的编程,应该也是这样的一套,因为C语言就是上述生成文件的套路。游戏的编程,初学的话可以建议看《游戏编程入门》( 美 哈本),这本书基于windows平台,是为几乎没有游戏开发经验的初学者写的,循序渐进,从2D讲到3D 的一些基本技术,其中的例子也非常经典,看完书基本就可以做出不错的2D 游戏了,也有了一定的3D基础了,之后再看一些深入的书籍像《Windows游戏编程大师技巧》。

B. c语言,编译、预编译区别

预编译又叫预处理是在编译之前完成的事情,主要是完成宏替换、文件包含和条件编译的处理
处理完的结果还是C程序,不是机器语言
而编译就是要把C语言的程序变成机器语言了

C. Android 怎么简单实现预编译

可以巧妙地利用常量来实现类似的功能。编译的时候,一般会把常量进行硬编码,并把不能抵达的代码进行删减。因此,我们有了下面类似的代码:


[java]

public final static boolean IsDebug= false;

if(IsDebug){
Log.i(tag,msg);
}


可以对编译后的文件,进行反编译

D. 以下哪些行为是在c++语言编译含预处理时完成的

所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是C语言的一个重要功能, 它由预处理程序负责完成。当对一个源文件进行编译时, 系统把自动引用预处理程序对源程序中的预处理部分作处理, 处理完毕自动进入对源程序的编译。

C语言提供了多种预处理功能,如宏定义、文件包含、 条件编译等。合理地使用预处理功能编写的程序便于阅读、修改、 移植和调试,也有利于模块化程序设计。

E. 在java中如何实现预编译

/*
* ProCompile.java *预处理要编译的文件,删除多余的空白,注释,换行,回车等
* Created on 2007年9月18日, 下午8:58 */ package javacompile; import java.io.*;
import java.util.regex.*;
import javax.swing.JOptionPane; /** * @com.junjian.sun public class PerCompile { File f = null;
String fileString = null;
Pattern p = null;
Matcher m = null;
String regex; //正则表达式 //初始化p
public PerCompile() {
regex ="(//.+)" + //(//.+) 对应单行注释
//"|(/\\*(.+\\n)+\\*/)"+ // 想对应多行注释... "|(\\r\\n)" + "|(\\n)"+//(\\r\\n)|(\\n)对应换行
"|(\\B\\s+)" ; // 空白符
String ss;
f = new File(new JOptionPane()
.showInputDialog("请输入文件所在路径~"));
try {
BufferedReader bf = new BufferedReader(new FileReader(f));
ss = bf.readLine()+"\n";
fileString = ss; //如果没有这两句,ss的开头会有“null”
while((ss = bf.readLine())!= null){
fileString += ss+"\n"; bf.close();
} catch (IOException ex) {
ex.printStackTrace(); p = Pattern.compile(regex);
m = p.matcher(fileString); //执行替换所有多余空行,空白符,注释
void Dels(){
System.out.println("before: "+fileString);
if(m.find()) System.out.println("find!!");
System.out.println(m.replaceAll("")); } }

-

F. 预处理是在编译之前完成的是什么意思 是在我按下编译按钮之前

呵呵,当然不是。
我来描述一下当你按下IDE,即集成开发环境中的编译按钮的时候,后台发生了什么,你就会明了。
我们所说的编译,比较笼统。严格或者说是原始意义上的编译是指将源代码翻译成机器二进制码。其实真正完成从源代码到机器码,要分为几个阶段的,具体情况要看是什么语言,还有编译器提供的扩展性特性。但是一般情况下都包含一下几个阶段;

首先,是预编译。这时候不是真正的编译,而是预处理,比如说进行宏展开。
接着就是编译。这是比较粗糙的说法,因为编译阶段也可以分为词法分析、语法分析、语言分析、中间代码产生、代码优化、产生机器码等阶段,这个是编译原理课程的内容。

所以当你按下编译按钮的时候,编译环境会进行预编译,然后才是真正的编译。

现代的图形界面集成开发环境的出现和流行,使得编译的过程往往被很多人所忽视。

any questions?

G. mysql怎么实现预编译

玩Oracle的都比较关注shared pool,特别是library cache,在使用了绑定变量(预编译sql)之后确实能得到很大的性能提升。现在在转Mysql之后特别是innodb很多东西都还能和Oracle对得上号的,就像innodb_buffer_pool_size类似于Oracle的database buffer cache,innodb_log_buffer_size类似于redo log buffer,但是innodb_additional_mem_pool_size仅仅类似于shared pool的Data dictionary cache,似乎还缺少和library cache相对应的东西。那就有一个问题了,在Mysql里面使用预编译的sql还会有性能提升吗?

这里我用Java的jdbc做了一下测试,分别用Statement和PreparedStatement执行1000个sql,并运行10次

1.使用Statement做硬解析:

结果如下:

elapsed time(ms):14773
elapsed time(ms):16352
elapsed time(ms):14797
elapsed time(ms):15800
elapsed time(ms):12069
elapsed time(ms):14953
elapsed time(ms):13238
elapsed time(ms):12366
elapsed time(ms):15263
elapsed time(ms):13089
average time(ms):14270

可以看出两种方式执行的结果几乎相同,不像Oracle差距那么大。而且就算是用PreparedStatement的方式,在Mysql数据库端抓出来的sql语句也不是以变量id=?的形式出现的,而是实际的数值。后来在网上看到在连接字符串上加上useServerPrepStmts=true可以实现真正的预编译

String url="jdbc:mysql://172.16.2.7:3306/testdb"; url=url+"?useServerPrepStmts=true";

加上这段后可以在数据库端可以看到明确的结果:

mysql> show global status like 'Com_stmt_prepare';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| Com_stmt_prepare | 11 |
+------------------+-------+
1 row in set (0.00 sec)

但是实际的运行结果和上面几乎一样,性能上也没有任何的提升。由此可以推断出Mysql由于缺少类似于Oracle的library cache的部件,因此采用预编译方式执行sql是没有性能上的提升的。

H. C语言文件的编译与执行的四个阶段并分别描述

开发C程序有四个步骤:编辑、编译、连接和运行。

任何一个体系结构处理器上都可以使用C语言程序,只要该体系结构处理器有相应的C语言编译器和库,那么C源代码就可以编译并连接到目标二进制文件上运行。

1、预处理:导入源程序并保存(C文件)。

2、编译:将源程序转换为目标文件(Obj文件)。

3、链接:将目标文件生成为可执行文件(EXE文件)。

4、运行:执行,获取运行结果的EXE文件。

(8)预编译是在哪里完成的扩展阅读:

将C语言代码分为程序的几个阶段:

1、首先,源代码文件测试。以及相关的头文件,比如stdio。H、由预处理器CPP预处理为.I文件。预编译的。文件不包含任何宏定义,因为所有宏都已展开,并且包含的文件已插入。我归档。

2、编译过程是对预处理文件进行词法分析、语法分析、语义分析和优化,生成相应的汇编代码文件。这个过程往往是整个程序的核心部分,也是最复杂的部分之一。

3、汇编程序不直接输出可执行文件,而是输出目标文件。汇编程序可以调用LD来生成可以运行的可执行程序。也就是说,您需要链接大量的文件才能获得“a.out”,即最终的可执行文件。

4、在链接过程中,需要重新调整其他目标文件中定义的函数调用指令,而其他目标文件中定义的变量也存在同样的问题。

I. VS2005的预编译是怎么实现的·~

在vs2005中有生成网站的菜单,但这样生成的文件aspx的文件还是能够看到代码,通过手工的预先编译,则可以完全把整个站点保护起来。

在命令提示符下进入:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>

然后键入预编译命令:aspnet_compiler -v /test -p "d:/***" "e:/***"

d:/***是指的你要编译的站点

e:/***指得是你编译好后存放的路径,没有该路径就自动生成

很爽吧,代码全部保护起来了,什么也看不到。。。

不过用反编译工具还是能读出来的。

注意:编译好的文件中的空文件夹丢失,比如你要放用户上传的文件的文件夹,自己补一下吧!

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jhtyt/archive/2006/05/09/713843.aspx

热点内容
python执行sql文件 发布:2025-03-19 15:05:35 浏览:266
表格式脚本写作 发布:2025-03-19 14:58:52 浏览:721
解压蜜蜂 发布:2025-03-19 14:58:02 浏览:250
百家站源码 发布:2025-03-19 14:56:47 浏览:475
安卓和unity哪个累 发布:2025-03-19 14:31:39 浏览:677
雅阁电动座椅怎么配置 发布:2025-03-19 14:28:30 浏览:635
探月编程课 发布:2025-03-19 14:22:34 浏览:311
62脚本怎么安装 发布:2025-03-19 14:04:25 浏览:573
php传值给html 发布:2025-03-19 14:02:05 浏览:608
windowsmedia缓存 发布:2025-03-19 14:02:00 浏览:765