A. C語言編譯器會編譯改變過的代碼,而不會編譯沒有改動的代碼。 我想知道它是怎麼判斷程序是否有唄修改過的
編譯器要記錄你的編譯生成文件,比如obj、exe等的生成日期,發現與相關的文件如.c源文件、obj等日期舊時則選擇對此部分重新編譯。
特別地,它記錄所有相關文件,比如你新修改了某頭文件.h,編譯系統會逐一比較所有使用這個.h文件的編譯結果,如果發現時間舊了就重新編譯它們。
B. c語言編譯器如何運行
編譯共分為四個階段:預處理階段、編譯階段、匯編階段、鏈接階段。
1、預處理階段:
主要工作是將頭文件插入到所寫的代碼中,生成擴展名為「.i」的文件替換原來的擴展名為「.c」的文件,但是原來的文件仍然保留,只是執行過程中的實際文件發生了改變。(這里所說的替換並不是指原來的文件被刪除)
2、匯編階段:
插入匯編語言程序,將代碼翻譯成匯編語言。編譯器首先要檢查代碼的規范性、是否有語法錯誤等,以確定代碼的實際要做的工作,在檢查無誤後,編譯器把代碼翻譯成匯編語言,同時將擴展名為「.i」的文件翻譯成擴展名為「.s」的文件。
3、編譯階段:
將匯編語言翻譯成機器語言指令,並將指令打包封存成可重定位目標程序的格式,將擴展名為「.s」的文件翻譯成擴展名為「.o」的二進制文件。
4、鏈接階段:
在示例代碼中,改代碼文件調用了標准庫中printf函數。而printf函數的實際存儲位置是一個單獨編譯的目標文件(編譯的結果也是擴展名為「.o」的文件),所以此時主函數調用的時候,需要將該文件(即printf函數所在的編譯文件)與hello world文件整合到一起,此時鏈接器就可以大顯神通了,將兩個文件合並後生成一個可執行目標文件。
C. 簡單描述編譯的幾個處理步驟
編譯過程分為分析和綜合兩個部分,並進一步劃分為詞法分析、語法分析、語義分析、代碼優化、存儲分配和代碼生成等六個相繼的邏輯步驟。這六個步驟只表示編譯程序各部分之間的邏輯聯系,而不是時間關系。
編譯過程既可以按照這六個邏輯步驟順序地執行,也可以按照平行互鎖方式去執行。在確定編譯程序的具體結構時,常常分若干遍實現。對於源程序或中間語言程序,從頭到尾掃視一次並實現所規定的工作稱作一遍。每一遍可以完成一個或相連幾個邏輯步驟的工作。
(3)c加加編譯程序怎麼修改語言擴展閱讀:
對於c編譯程序來說,其語言的特點如下:
1、c語言是一種結構化語言。它層次清晰,便於按模塊化方式組織程序,易於調試和維護,而且表現能力和處理能力極強。
2、c語言具有豐富的運算符和數據類型,便於實現各類復雜的數據結構。它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。
3、由於c語言實現了對硬體的編程操作,因此集高級語言和低級語言的功能於一體。它既可用於系統軟體的開發,也適合於應用軟體的開發。
4、此外,c語言還具有效率高、可移植性強等特點。因此它廣泛地移植到了各類各型計算機上,從而形成了多種版本。
D. C語言程序編譯以後一直顯示stdio.h里報錯,為什麼,怎麼修改求大神!
檢查
#include
<stdio.h>
以前的
程序,錯在前。
-----------------------------------------------
c
程序,擴展名
用
.c,
不要用
.cpp
c++
程序,擴展名
用
.cpp
不要用
.c
c++
程序
若用
stdio.h
時,先要含
c++
的頭:
#include<iostream>
using
namespace
std;
#include
<stdio.h>
E. 哪款c語言編譯程序支持編譯中文
g++支持unicode,但是windows下並不採用unicode編碼,而是根據操作系統本地語言採用gb2312等編碼,所以輸出中文也是亂碼的,dev c++採用的就是g++編譯器。
vc 里新建工程的話,選擇win32 cosole application,就是控制台應用
win32 application是windows程序(有GUI)
MFC application是基於MFC的GUI應用程序,其他的你以後如果學到自然會了解
如果是文件的話,c++ source file,表示cpp文件(c++源文件),c++ header file表示頭文件,
如果只有單個文件的,新建c++ source file就運行時候直接會幫你建立一個工程,然後編譯運行。
如果是2005 2008則必須新建一個工程,然後再工程中添加源文件和頭文件
F. 怎麼把C語言程序改為C++程序
C語言程序其實就是C++程序,因為C++兼容了C。
C++中輸入語句用cin代替scanf,cout代替printf,但是C++也識別scanf和printf
主要區別是C++擴展了C,有面向對象。
若要改,可以:
頭文件
#include
"stdio.h"
->
#include
<iostream>
using
namespace
std;
cin代替scanf,cout代替printf
G. 用C語言編譯程序:刪除C++源程序中的多餘空行及注釋文字
代碼如下:#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>void
main()
{
FILE*
fp
=
fopen("test.cpp",
"r");
if(NULL
==
fp)
{
return;
}
fseek(fp,
0L,
SEEK_SET);
char
char_line[1024]
=
{0}; int
totoalline
=
0;
printf("/****************原始文件*************************/\n");
while(1)
{
fgets(char_line,
1024,
fp);
int
size
=
strlen(char_line);
if(0
>=
size)
{
break;
}
printf("%s",
char_line);
memset(char_line,
0,
1024);
totoalline++;
}
printf("/****************原始文件結束,共%d行*************/\n",
totoalline); fseek(fp,
0L,
SEEK_SET);
totoalline
=
0;
FILE*
fp_to
=
fopen("result.cpp",
"w");
printf("\n\n/****************去除冗餘後的文件*****************/\n");
while(1)
{
fgets(char_line,
1024,
fp);
int
size
=
strlen(char_line);
if(0
>=
size)
{
break;
}
int
i;
for(i=0;
i<size-1;
i++)
{
if('/'
==
char_line[i]
&&
'/'
==
char_line[i+1])
{
break;
}
}
if(0
!=
i)
{
bool
flag_tab
=
0;
for(int
j=0;
j<i;
j++)
{
if('\t'
!=
char_line[j]
&&
'
'
!=
char_line[j])
{
flag_tab
=
true;
break;
}
}
if(flag_tab)
{
char*
ret
=
(char*)malloc(sizeof(char)*(i+1));
ret[i]
=
0;
memcpy(ret,
char_line,
i);
printf("%s\n",
ret);
//寫入到新文件
fwrite(ret,
sizeof(char),
i,
fp_to);
fwrite("\r\n",
sizeof(char),
2,
fp_to);
free(ret);
totoalline++;
}
}
memset(char_line,
0,
1024);
}
printf("/****************去除冗餘後的文件結束,共%d行*****/\n",
totoalline);
printf("詳情查看resutl.cpp\n");
fclose(fp);
fclose(fp_to);
}
H. c語言編程軟體如何變中文模式
1、直接在微軟官網上下載最新的vc,vs中文版,就可以得到中文模式的C語言編輯器。
2、如果是學C語言,建議使用TC,或者MyTC。原因很簡單,集成的IDE會造成很多依賴,養成很多不良的編程習慣,對於新手來說,TC已經很足夠了。另外,使用什麼IDE,跟支持不支持中文沒關系。編程的時候最好盡量不要使用中文來命名。學純C語言,還是使用TC吧,VC集成了太多VC方面的東東,會很困惑,看不清楚真正的C語言。
I. C語言怎麼編譯才能顯示中文
主要還是看你的編譯器是否支持了。
我用dev-cpp,覺得不錯。你試試。
J. c語言源文件未編譯怎麼解決
解決方法如下:
操作設備:戴爾筆記本電腦
操作系統:win10
操作程序:DEV-C++ v2.01
1、首先我們打開DEV-C++,點擊菜單欄中的「工具」,點擊「編譯選項」這個選項,打開編譯選項對話框。