當前位置:首頁 » 編程軟體 » 聲明會不會增加編譯時間

聲明會不會增加編譯時間

發布時間: 2022-06-06 05:04:37

㈠ 內聯函數與普通函數比較,在聲明、編譯時有什麼不同

在類聲明的內部聲明或定義的成員函數叫做內聯(INLINE)函數.
引入內聯函數的目的是為了解決程序中函數調用的效率問題。
在程序編譯時,編譯器將程序中出現的內聯函數的調用表達式用內聯函數的函數體來進行替換。顯然,這種做法不會產生轉去轉回的問題,但是由於在編譯時將函數體中的代碼被替代到程序中,因此會增加目標程序代碼量,進而增加空間開銷,而在時間代銷上不象函數調用時那麼大,可見它是以目標代碼的增加為代價來換取時間的節省。
在程序中,調用其函數時,該函數在編譯時被替代,而不是像一般函數那樣是在運行時被調用。

函數調用也會帶來降低效率的問題,因為調用函數實際上將程序執行順序轉移到函數所存放在內存中某個地址,將函數的程序內容執行完後,再返回到轉去執行該函數前的地方。這種轉移操作要求在轉去前要保護現場並記憶執行的地址,轉回後先要恢復現場,並按原來保存地址繼續執行。因此,函數調用要有一定的時間和空間方面的開銷,於是將影響其效率。特別是對於一些函數體代碼不是很大,但又頻繁地被調用的函數來講,解決其效率問題更為重要。引入內聯函數實際上就是為了解決這一問題。

㈡ Java中定義和聲明的區別

定義和聲明的定義區別

1、一種是需要建立存儲空間的。例如:int a 在聲明的時候就已經建立了存儲空間。

2、另一種是不需要建立存儲空間的。 例如:extern int a 其中變數a是在別的文件中定義的。

聲明是向編譯器介紹名字--標識符。它告訴編譯器「這個函數或變數在某處可找到,它的模樣象什麼」。

而定義是說:「在這里建立變數」或「在這里建立函數」。它為名字分配存儲空間。無論定義的是函數還是變數,編譯器都要為它們在定義點分配存儲空間。

對於變數,編譯器確定變數的大小,然後在內存中開辟空間來保存其數據,對於函數,編譯器會生成代碼,這些代碼最終也要佔用一定的內存。

總之就是:把建立空間的聲明成為「定義」,把不需要建立存儲空間的成為「聲明」。

編程為什麼要先聲明

你也可以不聲明,直接定義。但:
1、函數的作用域只是從定義的地方開始的。也就是說,在函數定義行之上,你是無法使用該函數的。而把函數的定義都放在主函數之前的話,程序會變得不清楚。所以在使用前只需用一行聲明一下就可以了,明了。
2、也許函數並不都是在一個文件里使用,這時候,如果再定義一遍,不僅顯得羅嗦,而且使程序的維護變得麻煩,如果修改這個函數的話,需要修改每個定義。
所以可以把函數聲明放在一個頭文件中,使用的時候,包含這個頭文件就可以了。
3、有時候,自己寫的函數需要給別人用,比如商業用途。這樣的話,不能將整個函數的實現都給對方,這就需要生成一個庫文件,而將函數聲明放在頭文件中來給對方使用。
4、有時候需要用函數聲明來重新聲明函數,即使前面已經聲明過。這樣做可以設置新的默認參數,也可以是為了屏蔽作用域外同名的函數聲明。

㈣ C中什麼時候要進行函數聲明

不加聲明通過編譯是因為子函數寫在調用他的函數的前面,如果是多個文件編譯的話,建議都進行聲明

㈤ c++primer3中,有一句話:「在多個文件之間編譯相同的函數模板定義增加了不必要的編譯時間」……

簡單點說,對於一個vector<int>的函數,比如size(),如果在不同的cpp中出現,在這些文件編譯的時候都要把vector<int>::size()編譯一遍。然後在鏈接的時候把重復的函數去掉。很顯然增加了編譯時間。

補充里你的理解是錯的,模板的聲明是不編譯的,更沒有空間,它根本不是實際的類型或函數,編譯器根本不管它。只有實例化的時候,才生成真正的類型、函數,而實例化的地方不在一起,必然造成同一個類型、函數被編譯了多次。反觀類的編譯,只在它的cpp中編譯一次,其他地方都使用它的頭文件得到聲明。

㈥ C/C++ #include<stdio.h>等等 頭文件 參加編譯 大部分的聲明 都是用不到的,效率太低了吧

只是在編譯的時候消耗時間,生成的運行文件也只會包括涉及到的函數。

㈦ VB中的變數必須先聲明才可使用嗎

不是,這個是要看設置的,VB6中默認是可以不必先聲明的,vb.net裡面默認是要先聲明才能使用的,在整個文件的最前端可以用Option Explicit On /Off 來指定是否需要先聲明再使用。

㈧ 問個問題,c++反復聲明變數會多耗時嗎

只有用到的東西才會占時間和空間。沒用的,編譯器會做出優化。

熱點內容
計算機編譯干什麼的 發布:2025-05-20 04:05:18 瀏覽:45
安卓如何調手機時間 發布:2025-05-20 04:01:31 瀏覽:915
風扇轉壓縮機不轉 發布:2025-05-20 03:57:47 瀏覽:284
安卓手機如何測網速慢 發布:2025-05-20 03:55:49 瀏覽:495
用電腦做機房的伺服器 發布:2025-05-20 03:55:48 瀏覽:13
如何修改文件夾修改日期 發布:2025-05-20 03:44:08 瀏覽:831
安卓如何登陸tiktok 發布:2025-05-20 03:30:53 瀏覽:75
linux下執行python 發布:2025-05-20 03:23:30 瀏覽:431
sql查看器 發布:2025-05-20 03:22:53 瀏覽:134
天格屬火三才配置哪些最好 發布:2025-05-20 03:18:42 瀏覽:978