❶ 執行C語言一定要先編譯么,不可以直接執行么
不可以直接執行
有些IDE看起來有直接執行的按鈕
實際上 這些直接執行的
也是經過了後台的編譯 鏈接的。
C文件無法被執行
只能生成exe後 才可以執行的。
❷ 如果將一個函數的聲明寫在頭文件中,程序中不再進行函數聲明,程序是否能正確編譯連接執行
你要是知道包含頭文件是什麼意思就理解了
比如
// test.h
int test();
//test.c
#include "test.h"
void main()
{
test();
}
編譯之後,實際上市
//test.cpp
int test();
void main()
{
test();
}
就是說你頭文件的東西統統會導入到包含它的文件
❸ 頭文件不參加編譯,為什麼還要包含到源文件中
頭文件通常需要參加編譯,要包含到源文件中。
當然,你可以 把 頭文件獨立出來,改名為 .c (或 .cpp), 不包含到 源文件中,與源文件分開編譯,編成 .obj 後 再鏈接也可以。
假如 某程序,確實不需要 某個頭文件,那麼 就沒有必要 包含進去。例如,程序里 沒有用到 三角函數,開方 之類 的 數學 庫 函數,你就 不需要 寫 #include <math.h>。例如,程序里 沒有用到 time() 之類的 時間庫 函數,你就 不需要 寫 #include <time.h>。
❹ C/C++ #include<stdio.h>等等 頭文件 參加編譯 大部分的聲明 都是用不到的,效率太低了吧
只是在編譯的時候消耗時間,生成的運行文件也只會包括涉及到的函數。
❺ 關於c語言頭文件編譯和運行的問題
1、只要在程序開頭加入#include<頭文件名>,在編譯過程當中,頭文件自動會被添加到源文件當中一起進行編譯。
2、編譯,編譯程序讀取源程序(字元流),對之進行詞法和語法的分析,將高級語言指令轉換為功能等效的匯編代碼,再由匯編程序轉換為機器語言,並且按照操作系統對可執行文件格式的要求鏈接生成可執行程序。
C源程序頭文件-->預編譯處理(cpp)-->編譯程序本身-->優化程序-->匯編程序-->鏈接程序-->可執行文件。
❻ 頭文件需要編譯么
靜態庫會在編譯的時候會插入到原代碼中一起編譯。不用另行編譯。
❼ C語言,頭文件不包含也能編譯通過
turbo
c
2.0編譯系統中如果用到輸入輸出函數是可以不寫,用到其他函數就要寫對應得頭文件,但是turbo
c
3.0中都要寫。
你最好是寫起嘛,這是一種規范,反正又不累!
❽ C++編程時關於頭文件的包含如何運行問題
頭文件自始至終不進行編譯,當c++編譯時(即compile時)頭文件展開到源文件中,對源文件中的函數和變數進行聲明,編譯正確後產生與源文件同名擴展名為.obj的二進制文件,然後鏈接時(即link時)編譯器對生成的二進制文件進行連接並生成.exe文件。現在的集成開發環境中,如vc6.0中,提供編連(即bulid)是將編譯和連接一鍵化了,但是編譯器還是執行以上2個步驟的。
同理vc自帶的頭文件也是這樣,不過是提供了二進制文件,在vc++6.0環境下vc98這個目錄下有微軟封裝好的二進制文件,微軟提供的函數定義已經編譯了,在我們編譯時,就不在進行編譯了。
你的程序中,當編譯時,會將student.h分別展開到main.cpp和student.cpp中,生成main.obj和student.obj(這個是編譯student.cpp生成的),然後連接兩個obj二進制文件,和#include <iostream>和#include <string>微軟提供的函數定義所在的二進制文件,是lib擴展名的在vc98這個目錄下,生成一個exe程序,這樣你所謂的編譯完成!!
❾ 最近剛接觸c++,我已經有了一些頭文件和對應的cpp文件,請問怎麼在項目里編譯並運行起來
如果用的是CFree或VC6
F5一鍵編譯
如果你用的是VS或DevCpp
創建一個項目
在 解決方案管理器 中 項目 右鍵添加源代碼、頭文件
調試-啟動(VS默認按鍵不是F5)
❿ 頭文件放到C裡面可以運行嗎我在看一段頭文件,它的動作和我的需要是一樣!這里就產生了一個問題,只要編
看LZ的描述應該只是靜態鏈接,如果已經得到可執行文件(如.exe),那麼不需要任何額外的源文件(例如.c)和庫文件就可以運行。編譯時可能需要頭文件。包含頭文件(即復制頭文件的文本內容來替換#include所在行)的作用是在不同編譯單元(源文件)間重用被重復的代碼,而這里最主要的重復代碼就是聲明。聲明可以引入一個符號,讓編譯器知道在源代碼或者庫文件中存在某些符號的定義,以便編譯器能夠編譯引用了外部符號的源代碼而不產生未定義標識符的編譯錯誤。編譯器生成目標文件(如.obj)時,在目標代碼對應位置留下佔位符以供鏈接器使用。鏈接器鏈接(替換佔位符、計算偏移等)這些文件(還可能有靜態庫文件,如.lib)生成靜態庫文件或可執行文件。
如果沒有頭文件,那麼編譯器可能會遇到未定義的標識符產生編譯錯誤;如果頭文件中聲明的符號不在源文件中且找不到包含這些符號定義的庫文件,則編譯可能通過但鏈接錯誤。這些錯誤情況下都無法生成可執行文件,因此無法運行。
對於每個編譯單元,只要編譯可以通過,那麼去除頭文件是沒問題的。
此外,一般編譯環境已經配置好了標准庫,所以不是使用第三方庫的話,只要能夠通過編譯,且不在多個編譯單元內重復定義已有符號的話一般都能夠成功鏈接。
====
[原創回答團]