[Mac 10.7.1 Lion Intel-based x64 gcc 4.2.1]Q: 如何讓編譯的檔案可以被gdb調試?A: 可以加入-g參數。如下代碼,儲存為hello.c: #include <stdio.h>int main(){ printf("hello world!\n"); return 0;}編譯 gcc hello.c -o hello得到hello.使用 gdb
[Mac-10.7.1 Lion Intel-based x64 gcc4.2.1 GNU gdb 6.3.50-20050815 (Apple version gdb-1708)]Q: 給個簡單的代碼,然後進入調試狀態。A: 如下代碼,儲存為hello.c:#include <stdio.h>int main(){ int i = 2; printf("%d\n", i); return 0;}gcc編譯,需要有-g參數:gcc -g
[Mac 10.7.1 Lion Intel-based x64 gcc4.2.1 xcode4.2]大道理大家都會說,因為書上到處都會寫。不喜歡講大道理,道理自在真實的事實中。Q: 如果需要提供一個計算兩個元素較大值的模組,該提供什麼樣的代碼?A: 當然,不能輕易將元素認為是整形,這樣可能導致很多時候無法使用。既然如此,模板成為一種很好地選擇。Q: 就類似如下代碼嗎?template<class T>T max(T a, T b){ return a >
[Mac 10.7.1 Lion Intel-based x64
[Mac-10.7.1 Lion Intel-based, gcc 4.2.1]Q: 指標到底是什嗎?A: 有一天,你初到合肥,要到一個地方,但是路線不熟悉。遂問了一個路人,請問烏邦托在哪裡?路人答曰:向南走即可。這個回答就像指標一樣,告訴你一個方向。但是,到底向南多少,這就像是指標類型決定的大小。Q: 看到那個const修飾指標的時候,老是搞不清楚到底是指標是常量還是指標指向的變數是常量?A: 其實很簡單,採用從右向左的讀法即可搞定這些。如下例子:#include
作者:陳曦日期:2012-6-16 10:21:31 環境:[Mac 10.7.1 Lion Intel-based x64 gcc4.2.1 xcode4.2] 轉載請註明出處Q: 對於編譯過程的詞法分析,到底應該使用什麼方式?A: 可以肯定的是,必然要對需要處理的資料挨個字元判斷,然後在恰當的位置截斷,得到一個個的token.Q: 為什麼得挨個字元都判斷?A: 因為編碼採用原始碼的方式,你無法判斷程式員下一個字元是什麼。比如int
[Mac 10.7.1 Lion Intel-based x64 gcc4.2.1 xcode4.2 ]Q: 如何解決abs函數傳入一個整形數最小值返回溢出的數?#include <stdio.h>#include <stdlib.h>#include <string.h>#include <limits.h>#define PRINT_D(intValue) printf(#intValue" is %d\n",
[Mac 10.7.1 Lion x64 Intel-based gcc4.2.1 xcode4.2]Q: 解釋下標題吧。A: 依稀記得,寫一個數值絕對值的函數時,寫到第三個,實在感覺很痛苦,重複了這麼多遍,立刻體會了重載和STL的重要意義。intabs(int n){ return n < 0 ? -n : n;}longabs_long(long n){ return n < 0 ? -n : n;}doubleabs_double(double n){
[Mac 10.7.1 Lion Intel-based x64 gcc4.2.1 xcode4.2]Q: c++的預設輸入輸出和c的有什麼優缺點?A: 任何一種語言都會有自身最推薦的一套模式,因為設計者可能已經很認真考慮了。沒有必要說哪種最好,哪種很差,最好和很差都有條件限制的。不同的使用者總能找到一種最適合自身的方式。
作者:陳曦日期:2012-7-28 18:19:55環境:[Mac 10.7.1 Lion Intel i3 支援64位指令 gcc4.2.1 xcode4.2] 轉載請註明出處Q1: 宏這個東西真是很奇怪,為什麼我想將一句#include代碼用宏來替換,卻不行?#define INCLUDE_STDIO #include<stdio.h>INCLUDE_STDIOint main(){ return 0;}儲存為preprocess_header.cA:
[Mac 10.7.1 Lion Intel-based x64 gcc4.2.1 xcode4.2]Q: c語言中的const和c++中的const關鍵字的含義是一樣的嗎?A: 不盡相同; c語言中const修飾的變數是不可更改的變數,它的核心還是變數;但是c++中const修飾的就是一個常量。比如,在c語言中使用const修飾的一個變數就不可以作為不可變長數組的元素個數,而c++就可以。Q:
[Mac 10.7.1 Lion Intel-based x64 gcc4.2.1 xcode4.2]Q: new操作符構造一個對象,它內部究竟調用了什嗎?A: 如下代碼:#include <iostream>using namespace std;#define COUT_ENDL(str) std::cout << #str << " is " << (str) << std::endl;class
作者:陳曦日期:2012-6-23 14:24:27環境:[Mac 10.7.1 Lion Intel i3 支援64位指令 gcc4.2.1 xcode4.2] 轉載請註明出處Q1: 編譯產生的可執行檔內部是如何被執行的?A: 當然,首先需要知道它的結構。先編寫一個簡單的程式,儲存為testForC.c:#include <stdio.h>#include <string.h>#define PRINT_D(longValue)
[Win7 vs2010]Q:
作者:陳曦日期:2012-6-8 10:50:13環境:[Ubuntu 11.04 Intel-based x64 gcc4.5.2 CodeBlocks10.05 AT&T彙編 Intel彙編] 轉載請註明出處Q: 舉個例子吧。A: 下面的代碼的目標是計算1+2的值,最後放到變數temp中,並輸出:#include <stdio.h>#include <string.h>#define PRINT_D(longValue)
作者:陳曦 日期:2012-8-17 12:53:12環境:[Mac 10.7.1 Lion Intel i3 支援64位指令 gcc4.2.1 xcode4.2] 轉載請註明出處Q1: 為什麼下面的輸出不按照代碼的順序顯示?#include <stdio.h>#include <unistd.h>int main(int argc, char **argv){ while(1) { fprintf(stdout, "stdout.");
作者:陳曦日期:2012-6-12 11:31:12環境:[Mac 10.7.1 Lion Intel-based x64 gcc4.2.1 xcode4.2] 轉載請註明出處Q: 解譯器來源於什嗎?A: 如果說是廣義的解譯器,那麼可以把它理解成翻譯器,只要能將一種被看成原始的東西翻譯成需要的東西,處理的東西就可以被稱為解譯器。從程式設計語言角度,解譯器更多地表達的含義是,將一種初始狀態的資料(一般是文本)轉換成另外一種通常來說是較為容易理解的文本或者一種執行過程。
作者:陳曦日期:2012-7-28 12:20:17 環境:[Mac 10.7.1 Lion Intel i3 支援64位指令 gcc4.2.1 xcode4.2] 轉載請註明出處Q1: 可變參數的函數調用能夠被正確執行的本質原因是什嗎?A: 可變參數的一個重要特點就是參數個數不確定,但是最終可以被正確執行一般需要堆棧以及參數類型的確定性支援。如果參數類型都無法確定是某種或者某個範圍內,那麼可變參數函數是無法實現的。Q2: 舉個可變參數的例子吧。A: 比如,求一組整形數的平均數:
private void GetData(string selectCommand, string connectionString, int flag) { SqlDataAdapter da = new SqlDataAdapter(selectCommand, connectionString); DataSet ds = new DataSet(); da.Fill(ds);
前幾天gfh在QQ群裡介紹了一下MS的兩項最新技術(應該還算是未來技術吧): G# 和