‘壹’ C语言编译器有哪些各有什么特点
C语言编译器目前主要有VC++、dev-C++、C-Free、win-TC、TC 2.0等等。
其中比较经典的VC++,微软的产品,编译器,链接器,运行,调试等功能于一体的强大开发工具,特点是功能十分强大,对于新手来说需要一段时间去摸索。
dev-C++是windows下一款开发c/c++的开发环境,使用gcc为编译器,遵循标准,功能比较强大,语法高量,可以进行单步调试(这对排除错误很重要),进行断点设置等功能,遵循C标准,是一款很强大的开发工具。
C-Free是一款支持多种编译器的专业化C/C++集成开发环境(IDE)。利用C-Free,使用者可以轻松地编辑、编译、连接、运行、调试C/C++程序。
TC 2.0:Borland公司的产品,在dos界面下编译运行,小巧、灵活,但是不能使用鼠标。
win-TC:在tc2.0的基础上加上了界面,能够使用鼠标,具有语法高量,可以嵌入汇编等特点,对新手一些,拜托了不能用鼠标的困难。
编译器,简单讲,就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器(Linker) → 可执行程序 (executables)。
‘贰’ 什么是c编译器有什么用,可以用它来写C语言吗
所谓c语言编译器,就是把编程得到的文件,比如.c,.h的文件,进行读取,并对内容进行分析,按照c语言的规则,将其转换成系统可以执行的二进制文件。
其本质在于对文件的读入,分析,及处理。这些操作,c语言都是可以实现的。
所以用c语言来做c语言的编译器是完全可行的。
但是,历史上的第一个c语言编译器,肯定不是c语言写的,因为在没有编译器时,无法把c语言转换成可执行文件。
只要有了第一版其它语言的编译器,就可以用c语言写编译器了。
事实上,目前大多数的c语言编译器,都是用c语言写的。
‘叁’ 请问有没有在线的C编译器啊
http://www.delorie.com/djgpp/compile/
‘肆’ 能实现输入函数的C/C++在线编译器有哪些
我认为目前最好用的在线编译器; http://www.mcqyy.com/RunCode/cpp/
‘伍’ 最好的在线编译器是什么网站必须包括c和c++的编译器.
当然是linux下gnu的gcc
复旦的教授推荐我们用这个,清华的教材也用这个(不过好像同时也用了vc6的)
‘陆’ 常见的C语言编译器是什么
目前最流行的C语言编译器有以下几种:
1、GNU Compiler Collection 或称GCC
GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。
GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows。GCC是自由软件过程发展中的着名例子,由自由软件基金会以GPL协议发布。
2、Microsoft C 或称 MS C
Microsoft C 是c语言的一种IDE(集成开发环境),常见的还有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++ ,Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,High C,Turbo C等等......
3、Borland Turbo C 或称 Turbo C
Turbo C是美国Borland公司的产品,Borland公司是一家专门从事软件开发、研制的大公司。该公司相继推出了一套 Turbo系列软件, 如Turbo BASIC, Turbo Pascal, Turbo Prolog, 这些软件很受用户欢迎。
(6)线上编译器c扩展阅读:
C编译的整个过程很复杂,大致可以分为以下四个阶段:
1、预处理阶段在该阶段主要完成对源代码的预处理工作,主要包括对宏定义指令,头文件包含指令,预定义指令和特殊字符的处理,如对宏定义的替换以及文件头中所包含的文件中预定义代码的替换等,总之这步主要完成一些替换工作,输出是同源文件含义相同但内容不同的文件。
2、编译、优化阶段编译就是将第一阶段处理得到的文件通过词法语法分析等转换为汇编语言。优化包括对中间代码的优化,如删除公共表达式,循环优化等;和对目标代码的生成进行的优化,如如何充分利用机器的寄存器存放有关变量的值,以减少内存访问次数。
3、汇编阶段将汇编语言翻译成机器指令。
4、链接阶段链接阶段的主要工作是将有关的目标文件连接起来,即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的目标文件成为一个能够被操作系统装入执行的统一整体。
‘柒’ 目前主流的C语言编译软件是什么
C语言相比其他很多新兴的、复杂的语言,语法还是简单一些,较好实现的。
所以在C语言几十年的发展中出现了各式各样的编译器,还有一些容易被误解为编译器的IDE。
这里列举几个主流的:
GCC
毫无疑问,GCC几乎是unix及linux系统中最通用的编译器套件,几乎所有的linux发行版都预装了GCC作为C语言的默认编译器。除了对C语言的支持,GCC还支持C++、Objective-C等多种语言。GCC早在1987就由Richard Stallman作为GNU计划的一部分发布。
Clang
Clang是近几年新兴的C/C++以及Objective-C的编译器,Apple是其主要投资者,其最初的开发者已加盟Apple。虽说是新兴,但其对C/C++标准的支持不亚于GCC等老牌编译器,并且外部接口和GCC完全兼容,并且因其模块化、错误提示完善等优点已经越来越受到重视。一些如FreeBSD等项目已将clang作为默认编译器。
其实Clang并不是一个完整的编译器,而是作为同一批开发者开发的另一个备受关注的虚拟机(类似于JVM)的llvm的一个前端开发,只是负责将C语言源码编译为llvm IR的中间语言,再由llvm编译为目标代码,这样做可以让其可移植性更好。
Microsoft Visual C++
作为拥有可视化集成编程系统的编译器,VC被很多使用Windows作为开发环境的初学者使用。详见网络的介绍
http://ke..com/view/2070966.htm?fromtitle=vc&fromid=7792954&type=syn#viewPageContent
‘捌’ 有没有能在手机上写c语言的编译器
c4droid是款android设备上的C/C++程序编译器
,默认以tcc(tiny c
compiler)为编译器,可以选择安装gcc插件(20mb,只有root用户可以使用),选用gcc后,可以用sdl(简单直控媒体层库,需安装sdl
plugin for c4droid)和qt(nokia官方开发库,需安装sdl plugin for
c4droid)。也可以开发native android app(需安装sdl plugin for c4droid),就像google
ndk一样。软件支持代码高亮,编译时间随cpu主频而定,主频越高编译越快。gcc插件版本4.7.2提供了示列程序,包含sdl,android native,qt和命令行测试程序源码。
最新版为4.03(2013年7月7日更新)。
贴吧已发布5.98版本,英文版及汉化版本,默认使用g++编译器,sdl及gcc插件也有相应更新,还可以拓展sdl2插件
‘玖’ 急求C语言网络编译器
C++编译器是C语言编译器的超集,所以你去下个Visual Studio就好了,肯定能编译C程序。
‘拾’ 如何用java调用c语言编译器实现在线编译c语
要在java中调用c语言的库,需要使用Java提供了JNI。
举例说明
在c语言中定义一个 void sayHello()函数(打印Hello World);然后在Java中调用这个函数显示Hello Word.
现在分别从Java和C语言两部分说明:
1. Java 部分
首先定义一个HelloNative,在其中申明sayHello函数,函数要申明为Native 类型的.如下:
public class HelloNative {
public native void sayHello();
}
编译这个类,生成class文件:
javac HelloWorld.java
利用javah生成需要的h文件
javah HelloNative
生成的 h文件大概如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloNative */
#ifndef _Included_HelloNative
#define _Included_HelloNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloNative
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloNative_sayHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
可以看一下上面自动生成的程序,程序include了jni.h,这个头文件在 $JAVA_HOME下的include文件夹下. 还可以发现生成的函数名是在之前的函数名前面加上了Java_HelloNative。
2. C语言部分
根据上面生成的h文件编写相应的代码实现,建立一个 HelloNative.cpp用来实现显示Hello World的函数.如下:
#include <stdio.h>
#include "HelloNative.h"
JNIEXPORT void JNICALL Java_HelloNative_sayHello(JNIEnv *, jobject)
{
printf("Hello World!\n");
}
代码编写完成之后,我们再用gcc编译成库文件,命令如下;
gcc -fPIC -I/usr/lib/jvm/java-7-openjdk-i386/include -I/usr/lib/jvm/java-7-openjdk-i386/include/linux -shared -o libHelloNative.so HelloNative.cpp
这样就会在当前目录下生成一个libHelloNative.so的库文件.这时需要的库已经生成,在C语言下的工作已经完成了.
接下来需要在Java中编写一个程序测试一下.在程序前,需要将我们的库载入进去.载入的方法是调用Java的 System.loadLibrary("HelloNative");
public class TestNative
{
static {
try {
System.loadLibrary("HelloNative");
}
catch(UnsatisfiedLinkError e) {
System.out.println( "Cannot load hello library:\n " + e.toString() );
}
}
public static void main(String[] args) {
HelloNative test = new HelloNative();
test.sayHello();
}
}
但是再编译后,运行的时候,问题又出现了.
Cannot load hello library:
java.lang.UnsatisfiedLinkError: no HelloNative in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloNative.sayHello()V
at HelloNative.sayHello(Native Method)
at TestNative.main(TestNative.java:13)
载入库失败,但是库明明就是放在当前文件夹下的,怎么会载入失败呢?
用System.getProperty("java.library.path")查看,发现java.library.path中并不u存在当前的目录.主要有以下的几个解决办法:
1) 将生成的库复制到java.library.path有的路径中去,当然这样不是很好
2) 设置环境变量export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ,将当前的目录加入到LD_LIBRARY_PATH中
3) 设置java 的选项,将当前的目录加入到其中 .java -Djava.library.path=. $LD_LIBRARY_PATH
这样之后程序就能够成功的运行了.可以看见显示的"Hello World!"了