A. #include 是什麼意思
通俗的說:在C系統的編程語言中,#include是為了聲明在這個地方插入別的文件中的代碼。
#include是一個計算機專業術語,一指C/C++中包含頭文件命令,用於將指定頭文件嵌入源文件中。#include一般用在C、C++等語系的編譯環境(就是用在編程軟體的編程代碼里)中,直白的說,它就是告訴你,在這個地方,你要插入一堆代碼,這堆代碼在另一個文件里。
例如:#include <stdio.h>
這就是說,在代碼的這個地方,要相當於把stdio.h文件里的代碼放到這個地方來。打「<>」這種尖括弧,說的是,這個文件是編程環境標配擁有的文件,到默認的標配的地方去找這個文件。
預處理器發現 #include 指令後,就會尋找指令後面<>中的文件名,並把這個文件的內容包含到當前文件中。被包含文件中的文本將替換源代碼文件中的#include 指令, 就像你把被包含文件中的全部內容鍵入到源文件中的這個位置一樣。
include在JSP命令中的作用:
<%@include %>指命將會在JSP編譯時插入一個包含文本或代碼的文件,當你使用<%@ include %>;指命時,這個包含的過程就當是靜態的。靜態的包含就是指這個被包含的文件將會被插入到JSP文件中去,這個包含的文件可以是JSP文件,HTML文件,文本文件。如果包含的是JSP文件,這個包含的JSP的文件中代碼將會被執行。
如果你僅僅只是用include 來包含一個靜態文件。那麼這個包含的文件所執行的結果將會插入到JSP文件中放<% @ include %>;的地方。一旦包含文件被執行,那麼主JSP文件的過程將會被恢復,繼續執行下一行.
這個被包含文件可以是html文件,jsp文件,文本文件,或者只是一段java代碼,但是你得注意在這個包含文件中不能使用<html>,</html>,<body>,</body>;標記,因為這將會影響在原JSP文件中同樣的標記 ,這樣做有時會導致錯誤.
B. C語言中,include是什麼意思
在C系統的編程語言中,#include是為了聲明在這個地方插入別的文件中的代碼。
以#開頭,包含某個頭文件,如#include <stdio.h>,就是相當於引用stdio.h這個文件,然後這個文件裡面所定義的一些函數就可以直接使用了。
(2)include命令擴展閱讀
include()語句包含並運行指定文件。
以下文檔也適用於require()。這兩種結構除了在如何處理失敗之外完全一樣。include()產生一個警告而require()則導致一個致命錯誤。換句話說,如果想在遇到丟失文件時停止處理頁面就用require()。include()就不是這樣,腳本會繼續運行。
同時也要確認設置了合適的 include_path。注意在 php 4.3.5 之前,包含文件中的語法錯誤不會導致程序停止,但從此版本之後會。
尋找包含文件的順序先是在當前工作目錄的相對的 include_path 下尋找,然後是當前運行腳本所在目錄相對的 include_path 下尋找。
例如 include_path 是 .,當前工作目錄是 /www/,腳本中要 include 一個 include/a.php 並且在該文件中有一句 include "b.php",則尋找 b.php 的順序先是 /www/,然後是 /www/include/。如果文件名以 ../ 開始,則只在當前工作目錄相對的 include_path 下尋找。
當一個文件被包含時,其中所包含的代碼繼承了 include 所在行的變數范圍。從該處開始,調用文件在該行處可用的任何變數在被調用的文件中也都可用。不過所有在包含文件中定義的函數和類都具有全局作用域。
C. include的命令
做c/c++編程的對#include指令都不會陌生,絕大多數人也都知道如何使用,但我相信仍有人對此是一知半解的,
C:
#include <stdio.h>
C++:
#include <iostream>
表示包含C/C++標准輸入輸出頭文件。包含指令不僅僅限於.h頭文件,可以包含任何編譯器能識別的C/C++代碼文件,包括.c、.hpp、.cpp、.hxx、.cxx等,甚至.txt、.abc等等都可以。
預處理器發現 #include 指令後,就會尋找指令後面<>中的文件名,並把這個文件的內容包含到當前文件中。被包含文件中的文本將替換源代碼文件中的#include 指令, 就像你把被包含文件中的全部內容鍵入到源文件中的這個位置一樣。 preprocess
預處理:為方便編譯器處理而設置的一種機制,包括一些常用預處理指令和語句,我們統稱為預處理系統。
如#include #define #if...#else...#endif #pragma等
這些指令的實現是由編譯器來決定的(implementation specified)
提到預處理指令,順便說一下頭文件防止重復包含的2種方法
a.保護宏(暫且稱為Macro guard 宏衛兵?):
#ifndef _ABCDE_H
#define _ABCDE_H
/*
代碼部分
*/
#endif
在被包含過一次之後,宏_ABCDE_H已經有了,下次再碰到就會略過從#define _ABCDE_H開始到#endif之間的代碼
還有一種特定編譯器支持的指令:
b.#pragma once
能保證該文件(物理上的)只被編譯一次,也能起到防止重復包含的作用
但這2種方式是有區別的:
a.Macro guard可移植性好,絕大多數編譯器都支持,而且萬一不小心拷貝了幾分相同的代碼也不會出問題,但你得確保這個宏名不會與其他的宏沖突,否則等編譯器報出一大堆錯誤的時候你可能會覺得莫名其妙;
b.#pragma once指令簡單,它能保證該文件(物理上的)只被編譯一次,不用去費勁的想不同的宏名,但如果有幾份該文件的拷貝,顯然起不到作用。
declaration
聲明:指將一個名稱引入當前編譯單元,或者重新聲明一個前面已經聲明過的名稱,聲明指定了如何解釋一個名稱和該名稱具有的屬性;
例如:
int main(void)
{
int a; // 聲明了變數a,類型為int
int *pa; // 聲明了變數pa,類型為指向int型的指針類型
}
definition
定義:除了以下情況,聲明就是定義
a.聲明函數但不包括函數體;
b.聲明包含extern鏈接限定符,例如:extern int a;
c.聲明既沒有初始化語法,也沒有函數體;
d.類聲明中聲明靜態數據成員;
e.類名字聲明;
f.typedef聲明;
g.using聲明或者using指令;
以上情況適用於C具有的特徵,C++則完全適用,一般來說定義要為其對象分配或預留存儲空間,而聲明則不用。
translation unit
編譯單元:一個源文件,.c .cpp等和它所包含的文件一起,在經過預處理之後形成一個源碼文件,標准稱之為translation unit(編譯單元)包括一系列的聲明和定義;一個program(程序)由一個或多個編譯單元組成。編譯器將各個編譯單元編譯為目標代碼(.obj),通過連接器(linker)將這些編譯後的編譯單元(即目標代碼)連接成完整的指令序列(可執行文件、靜態庫、動態庫等)。
one definition rule
一次定義規則:是指定義在所有進入連接的編譯單元中只能有一次。 A:頭文件只放聲明
example_a.h
void function();
example_a.cpp:
#include example_a.h
void function()
{}
B.被包含的文件可以使用任意擴展名:
只要是用符合標準的代碼編寫的文本文件,就可以使用#include來進行包含,包括.cpp .c等常見的源文件擴展名;
example_b_1.b
void function();
example_b_1.cpp:
#include example_b_1.b
void function()
{}
example_b_2.b
void function1();
void function2();
example_b_21.cpp:
void function1()
{}
example_b_22.cpp:
#include example_b_1.b
#include example_b_21.cpp
void function2()
{}
上面的例子中,example_b_21.cpp僅被包含在example_b_22.cpp中,不再被其他的文件包含,而且不加入工程中;
C.標准頭文件的使用
最新的C++標准庫中的一切內容都被放在名字空間std中(名字空間中的內容對外是不可見的),但是帶來了一個新問題,無數現有的C++代碼都依賴於使用了多年的偽標准庫中的功能,如聲明在<iostream.h>;等頭文件中的功能,使用std包裝標准庫導致現有代碼的不可用,為了兼容這種情況,標准委員會為包裝了std的那部分標准庫創建了新的頭文件,新的頭文件的文件名與舊的一樣,只是沒有.h這個後綴,如<iostream.h>;就變成了<iostream>;。對於C頭文件,採用同樣的方法,但還在每個頭文件名前加了字元c,如<string.h>;就變成了<cstring>;,<stdio.h>;變成了<cstdio>;。最好使用新的文件頭,使用新的文件頭的C++程序,需要使用using namespace std或者using namespace std::指定的類名,等方法來使需要的類對於我們的代碼可視。 Include 指令
在JSP中包含一個靜態的文件,同時解析這個文件中的JSP語句.
JSP 語法
<%@ include file=relativeURL %>
例子
include.jsp:
<html>
<head><title>An Include Test</title></head>
<body bgcolor=white>
<font color=blue>
The current date and time are
<%@ include file=date.jsp %>
</font>
</body>
</html>
date.jsp:
<%@ page import=java.util.* %>
<%= (new java.util.Date()).toLocaleString() %>
Displays in the page:
The current date and time are
Aug 30,1999 2:38:40 <%@include %>;指命將會在JSP編譯時插入一個包含文本或代碼的文件,當你使用<%@ include %>;指命時,這個包含的過程就當是靜態的。靜態的包含就是指這個被包含的文件將會被插入到JSP文件中去,這個包含的文件可以是JSP文件,HTML文件,文本文件。如果包含的是JSP文件,這個包含的JSP的文件中代碼將會被執行。
如果你僅僅只是用include 來包含一個靜態文件。那麼這個包含的文件所執行的結果將會插入到JSP文件中放<% @ include %>;的地方。一旦包含文件被執行,那麼主JSP文件的過程將會被恢復,繼續執行下一行.
這個被包含文件可以是html文件,jsp文件,文本文件,或者只是一段Java代碼,但是你得注意在這個包含文件中不能使用<html>,</html>,<body>,</body>;標記,因為這將會影響在原JSP文件中同樣的標記 ,這樣做有時會導致錯誤.
有一些<%@ include %>;指命的行為是以特殊的JSP編譯條件為基礎,比如:
這個被包含的文件必須對所有客戶都有開放且必須f有效,或者它有安全限制
如果這個包含文件被改變,包含此文件的JSP文件將被重新編譯
屬性:
file=relativeURL
這個包含文件的路徑名一般來說是指相對路徑,不需要什麼埠,協議,和域名,如下:
error.jsp/templates/onlinestore.html/beans/calendar.jsp
如果這個路徑以/開頭,那麼這個路徑主要是參照JSP應用的上下關系路徑,如果路徑是以文件名或目錄名開頭,那麼這個路徑就是正在使用的JSP文件的當前路徑.
D. #include是什麼意思
include是一個計算機專業術語,一指C/C++中包含頭文件命令,用於將指定頭文件嵌入源文件中。二指include 指令,在JSP中包含一個靜態的文件,同時解析這個文件中的JSP語句。三指PHP語句。
表示包含C/C++標准輸入輸出頭文件。包含指令不僅僅限於.h頭文件,可以包含任何編譯器能識別的C/C++代碼文件,包括.c、.hpp、.cpp、.hxx、.cxx等,甚至.txt、.abc等等都可以。
預處理器發現 #include 指令後,就會尋找指令後面<>中的文件名,並把這個文件的內容包含到當前文件中。被包含文件中的文本將替換源代碼文件中的#include 指令, 就像你把被包含文件中的全部內容鍵入到源文件中的這個位置一樣。
(4)include命令擴展閱讀:
語言組成
1、數據類型
C的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。
2、常量與變數
常量其值不可改變,符號常量名通常用大寫。
變數是以某標識符為名字,其值可以改變的量。標識符是以字母或下劃線開頭的一串由字母、數字或下劃線構成的序列,請注意第一個字元必須為字母或下劃線,否則為不合法的變數名。變數在編譯時為其分配相應存儲單元。
3、數組
如果一個變數名後面跟著一個有數字的中括弧,這個聲明就是數組聲明。字元串也是一種數組。它們以ASCII的NULL作為數組的結束。要特別注意的是,方括內的索引值是從0算起的。
4、指針
如果一個變數聲明時在前面使用 * 號,表明這是個指針型變數。換句話說,該變數存儲一個地址,而 *(此處特指單目運算符 * ,下同。C語言中另有 雙目運算符 *) 則是取內容操作符,意思是取這個內存地址里存儲的內容。指針是 C 語言區別於其他同時代高級語言的主要特徵之一。
指針不僅可以是變數的地址,還可以是數組、數組元素、函數的地址。通過指針作為形式參數可以在函數的調用過程得到一個以上的返回值,不同於return(z)這樣的僅能得到一個返回值。
指針是一把雙刃劍,許多操作可以通過指針自然的表達,但是不正確的或者過分的使用指針又會給程序帶來大量潛在的錯誤。
5、字元串
C語言的字元串其實就是以'