當前位置:首頁 » 編程軟體 » 在線c編譯

在線c編譯

發布時間: 2022-01-18 07:30:48

『壹』 怎樣用c語言編譯

C編譯的整個過程很復雜,大致可以分為以下四個階段:

  1. 預處理階段在該階段主要完成對源代碼的預處理工作,主要包括對宏定義指令,頭文件包含指令,預定義指令和特殊字元的處理,如對宏定義的替換以及文件頭中所包含的文件中預定義代碼的替換等,總之這步主要完成一些替換工作,輸出是同源文件含義相同但內容不同的文件。

  2. 編譯、優化階段編譯就是將第一階段處理得到的文件通過詞法語法分析等轉換為匯編語言。優化包括對中間代碼的優化,如刪除公共表達式,循環優化等;和對目標代碼的生成進行的優化,如如何充分利用機器的寄存器存放有關變數的值,以減少內存訪問次數。

  3. 匯編階段將匯編語言翻譯成機器指令。

  4. 鏈接階段鏈接階段的主要工作是將有關的目標文件連接起來,即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的目標文件成為一個能夠被操作系統裝入執行的統一整體。

『貳』 想找兩個很好的C C++語言學習網站.最好能在線編譯.

如果想學習的話去www.csdn.net吧。中國最大的程序員社區,每天有數千人在線為你解答各種問題,包括我 :)

在線編譯的話可以去sourceforge.net,不過要在那裡注冊項目不是一件容易的事。這個網站是全球最大的開源社區,也擁有全球最大的編譯農場,可以將你的附合標準的代碼編譯為適合於各個操作系統的程序。

有幸本人的一個項目在sourceforge內佔有一席之地,網址在:http://sourceforge.net/projects/fireseedone

『叄』 最好的在線編譯器是什麼網站必須包括c和c++的編譯器.

http://cmpe150-1.cmpe.boun.e.tr/phpccompiler/login.php

『肆』 c語言在線編譯

#include<stdio.h>//頭文件補上
int max(int x,int y)//定義聲明函數
{
int z;
z=(x>y)?x:y;
return(z);
}
int main()
{
int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b);//函數調用
printf("%d",c);
return 0;
}

『伍』 能在網上在線編譯C語言,並編譯呈現出來的網站是什麼

http://acm.h.e.cn/

『陸』 請問C語言在線編譯軟體是怎麼做的是用javasccript在本地編譯還是在伺服器編譯完發回來呢

在伺服器端吧,在線編譯嘛,如果在本地就叫做輔助編譯工具了

『柒』 能實現輸入函數的C/C++在線編譯器

我認為目前最好用的在線編譯器; http://www.mcqyy.com/RunCode/cpp/

『捌』 如何用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!"了

『玖』 求助C/C++有網上在線編譯器嗎

有種東西叫做網路

『拾』 java如何實現c語言的在線編譯

寫JSP、保存頁面的C到文件,使用JAVA寫一個指處理,再用過Runtime.exec調用並抓取輸出的返回,最後將結果返回給頁面。

熱點內容
腳本圈是引流加粉嗎 發布:2024-12-22 18:41:26 瀏覽:391
ajax文件上傳表單提交 發布:2024-12-22 17:55:00 瀏覽:856
win7無法共享的文件夾 發布:2024-12-22 17:53:39 瀏覽:41
華為手機密碼怎麼解鎖 發布:2024-12-22 17:53:38 瀏覽:554
android設置圓角textview 發布:2024-12-22 17:53:37 瀏覽:739
易語言源碼隱藏 發布:2024-12-22 17:39:23 瀏覽:101
android彈出窗口 發布:2024-12-22 17:16:22 瀏覽:299
qq為什麼改密碼還是登錄不上 發布:2024-12-22 17:08:00 瀏覽:220
解壓游戲香皂 發布:2024-12-22 16:49:29 瀏覽:353
新預演算法的亮點 發布:2024-12-22 16:36:30 瀏覽:960