1. C++/C宏定義中## 連接符與# 符的含義拜託各位大神
## 連接符號由兩個井號組成,其功能是在帶參數的宏定義中將兩個子串(token)聯接起來,從而形成一個新的子串。但它不可以是第一個或者最後一個子串。所謂的子串(token)就是指編譯器能夠識別的最小語法單元。具體的定義在編譯原理里有詳盡的解釋,但不知道也無所謂。同時值得注意的是#符是把傳遞過來的參數當成字元串進行替代。下面來看看它們是怎樣工作的。這是MSDN上的一個例子。 假設程序中已經定義了這樣一個帶參數的宏: #define paster( n ) printf( "token" #n " = %d", token##n ) 同時又定義了一個整形變數: int token9 = 9; 現在在主程序中以下面的方式調用這個宏: paster( 9 ); 那麼在編譯時,上面的這句話被擴展為: printf( "token" "9" " = %d", token9 ); 注意到在這個例子中,paster(9);中的這個」9」被原封不動的當成了一個字元串,與」token」連接在了一起,從而成為了token9。而#n也被」9」所替代。 可想而知,上面程序運行的結果就是在屏幕上列印出token9=9 (查找到的)
記得採納啊
2. java文件在編譯時出現找不到符號的問題,哪位大神幫我一下
以下是可運行代碼:
錯誤1. 沒有導包 就是import 語句. 因為你引用了 Arrays,Set等一些類,所以需要導入。
2. split 寫錯了。 你寫錯spilt 了。
有問題留言。
*/
import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;
public class Set1{
static void fill(Set s){
s.addAll(Arrays.asList("one two three four five six seven".split(" ")));
}
public static void test(Set s){
System.out.println(s.getClass().getName().replaceAll("\\w+\\."," "));
fill(s); fill(s); fill(s);
System.out.println(s);
s.addAll(s);
s.add("one");
s.add("one");
s.add("one");
System.out.println(s);
System.out.println("s.contains(\"one\"):"+s.contains("one"));
}
public static void main(String[] args){
test(new HashSet());
test(new TreeSet());
test(new LinkedHashSet());
}
}
3. C++中,宏定義與一般的定義有什麼區別
C/C++中的宏定義是進行符號常量定義,該定義用於定義一種符號信息用來表示一些特殊的信息,使源代碼更具有可讀性,同時,也可以提高系統的可移植性。宏定義是在編譯時進行解釋與替換的,實際運行中的代碼是沒有宏定義符號的。而一般變數或常量的定義在系統運行中,是有自己的內存空間,訪問許可權,和生存周期的。
宏定義常量
#definePI3.141
注意:1、符號常量與數值間沒有等號2、該語句不需要以分號結尾
如:
#definePI=3.141語法上無大問題,但應用中可能會出錯,編譯時,所有的PI會替換成『=3.141'
#definePI3.141;語法上無大問題,但應用中可能會出錯,編譯時,所有的PI會替換成『3.141;』
變數定義
doublePI=3.141;//定義一個變數PI,在內存中會給變數PI分配一個空間,其空間中存儲了3.141,在使用中,可以隨時改變PI值,如:PI=3.1415926;
常量定義
constPI=3.141;//因為沒有寫類型,默認為int類型,所以,這里的PI值實際為3
constdoublePI=3.141;//正確定義一個浮點型常量
常量與變數的差別是:常量一經定義後,就不能再修改!如果在使用中修改PI,則編譯或運行時會出錯,如VC6報錯:error C2166: l-value specifies const object
常量與宏定義常量的區別是:宏定義會在預處理階段將用define定義的內容對代碼中相應的標識符進行替換(編譯期替換,編譯後宏消失)。因此程序運行時,常量表中並沒有用define定義的常量,系統不為它分配內存。const定義的常量,在程序運行時在常量表中,系統為它分配內存。
4. c語言中的編輯,編譯,連接,運行分別是什麼意思
在C語言編程中,編輯是首要步驟,涉及使用文本編輯器或集成開發環境(IDE)創建源代碼文件。這個階段,開發者通過編寫邏輯和演算法,定義變數和函數,形成一個完整的程序。
接下來是編譯階段,這是將C語言源代碼轉換為機器可讀形式的過程。編譯器會檢查語法錯誤和邏輯錯誤,並生成目標文件。如果編譯過程中發現錯誤,編譯過程將停止,無法生成目標文件。
鏈接是編譯後的目標文件與庫文件組合的過程,生成最終可執行文件。鏈接器會解決目標文件之間的引用問題,確保程序能夠正確執行。如果鏈接過程中遇到錯誤,例如未定義的符號或庫文件缺失,鏈接過程將失敗,導致無法生成可執行文件。
最後一步是執行,即運行編譯和鏈接生成的可執行文件。這一步是整個編程過程的最終目標,通過執行程序,驗證其功能是否符合預期。
在C語言編程流程中,每個步驟都至關重要。正確的編輯確保代碼的質量,准確的編譯保證代碼的正確性,成功的鏈接生成可執行文件,最終執行驗證程序的功能。