gcc常見用法

1。gcc包含的c/c++編譯器 gcc,cc,c++,g++,gcc和cc是一樣的,c++和g++是一樣的,一般c程式就用gcc編譯,c++程式就用g++編譯 2。gcc的基本用法 gcc test.c這樣將編譯出一個名為a.out的程式 gcc test.c -o test這樣將編譯出一個名為test的程式,-o參數用來指定產生程式的名字 3。為什麼會出現undefined reference to 'xxxxx'錯誤?

執行一個命令,將其輸出截獲的代碼-使用無名管道

使用popen庫函數的版本:     #include <unistd.h>    #include <stdio.h>    #include <stdlib.h>    #include <fcntl.h>    #include <limits.h>    #define BUFSZ PIPE_BUF    void err_quit(char *msg);    int main(int argc, char *argv[]) 

gcc中的##表示什嗎?

在gstreamer的源碼中,看到了GST_BOILERPLATE_FULL宏的定義,原來在這個宏中就定義著_base_init, _init, _class_init這些函數的原型,難怪我們的源碼中不需要定義這些函數原型呢,而且這個宏中最重要的就是可以說明我們的plugin是繼承自哪個 class的(看GObject的相關內容),而且這個宏最重要的就是調用了gst_type_register_static_full函數,將 _base_init, _init,

stdout和stderr

stdout和stderr都是UNIX/Linux系統兩個內建的檔案,他們和stdin一起,在每個進程啟動後都會自動產生,編號分別是0、1、2 這裡需要說明的是,對於stdout,這是一個有Buffer存在的檔案流,也就是說,輸出到stdout的字串可能不會被立即就顯示出來,所以,對於stdout,可以是用fflush(stdout)這樣的方法來強制輸出 而stderr不同,由於輸出的是錯誤資訊,所以,輸出到stderr的字串都會被立即顯示

gtk_widget_realize函數的作用

gtk_widget_realize這個函數是用來建立該widget對應的GdkWindow和相關資源的。一般我們用不到這個函數,一般是在建立自訂的widget的時候,需要用到。 我們一般不需要使用這個函數的原因是:當我們調用gtk_widget_show_all函數的時候,就會自動調用這個函數。但是 Foundations of GTK+ Developing一書中提到,對於GtkEventBox,_show_all函數並不會調用realize,所以我們需要手動調用一次這個函數。而

從rtspplayer demo程式在手機上運行來看gcc的-rpath, -rpath-link這兩個option

rtspplayer這個程式在手機上啟動並執行時候,要使用fbsink來作為video sink組件。這是使用了framebuffer的一個video sink組件。所以在代碼中,很自然只需要在gst_element_factory_make的時候將xvimagesink換成fbsink就可以 了。但是程式在scratchbox中編譯了之後,傳到了手機上,運行卻發生錯誤,報告說: No such element ...... `fbsink'

透明位元影像的實現

透明位元影像的顯示 包含透明色的位元影像的繪製方法有多種,最簡單的方法是調用現成的函數: TransparentBlt,也可以通過自己的代碼實作類別似TransparentBlt的功能,實現過程也有兩種形式,一種是事先做一張掩碼位元影像,另 一種是動態產生掩碼位元影像。本文將介紹動態產生掩碼位元影像繪製具有透明地區位元影像的方法。 一、TransparentBlt 函數的使用 TransparentBlt 函數在Windows98/Windows2000以上版本運行,系統中需要包含

exec函數組六個函數的用法和區別

exec函數組有六個函數,分別是: #include <unistd.h> extern char **environ; int execl(const char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path, const char *arg , ..., char * const envp[]);

申明一個函數指標,並且該函數的傳回值也是一個函數指標 — 範例程式碼

來自interview的一個考題,所以寫了一個測試程式來demonstrate一下。 func是一個函數指標,該函數傳回值是int,沒有輸入參數;然後主程式中聲明了一個函數指標myFuncPointer,該函數指標代表的函 數輸入參數是一個int,傳回值也是一個函數指標,類型就是func類型的。所以我們可以把func2這個函數賦給myFuncPointer這個指標。 interview的題目要的就是myFuncPointer這個指標的聲明。

GTK Box(hbox&vbox)的expand和fill兩個屬性的實踐理解

1. GtkHBox/GtkVBox的gtk_box_pack_start函數中的expand和fill兩個參數的區別: expand就是當Box給我們的widget分配了額外的空間後,我們的widget會佔住這個空間,不會讓給別人。 fill就是當expand為TRUE的時候,我們不僅佔用Box給我們分配的空間,而且會把自己的介面擴大到這個空間上。 所以,簡單來說,expand=TRUE,

kernel object用完需要CloseHandle,user和gdi object需要CloseHandle嗎?

通過windows via C/C++,知道了kernel object,也知道了用完了kernel object之後,要調用CloseHandle。這個函數的作用就是將該kernel object的usage count - 1,當這個count為0的時候,該kernel object會變成signal狀態/銷毀。 kernel object是不屬於process的,是屬於windows核心的。process只有一個kernel object handle

從lftp的源碼看memmove和memcpy的區別

區別很簡單,看這兩個函數的man手冊就能看的出來。簡單來說,memmove是把一堆byte從src移到dst,memcpy是把一堆byte從 src拷貝到dst,最大不同的是:memmove是先把一堆byte拷貝到一個臨時的array中,然後再把這個臨時的array寫到dst中去;而 memcpy沒有這個邏輯,直接就是從src一個一個位元組的讀,同時往dst一個一個位元組的寫。這樣就導致了一個最根本的不同: memcpy不適合或者說不能處理src和dst兩塊記憶體有重疊(overlap)的情況。

有關STL中map的key是指標的情況分析和其他map使用注意點

比如有這麼一個map:map<TCHAR *, TCHAR *> map1;這樣當往map1中插入資料的時候,key是一個指標。在SDClient中,我們將文本資源讀入一個map,然後將來使用literal的文本key字串來將value取出,從而達到國際化的目的。但是這裡有一個問題就是,由於key是一個指標,所以當我們嘗試用literal的TCHAR *來取出value時,發現value取不出來。這是因為插入資料時候的TCHAR *和我們取的時候的TCHAR

Mesa是什嗎?-來自OpenGL的官方解釋

Mesa is a 3-D graphics library with an API which is very similar to that of OpenGL. To the extent that Mesa utilizes the OpenGL command syntax or state machine, it is being used with authorization from SGI. While Mesa is not a licensed OpenGL

判斷字串是否是整數或浮點數

判斷一個字串是否是一個整型數或浮點數 兩個函數:isNum-判斷是否是一個整型數 isFloat-判斷是否是一個浮點數 代碼: Code: Select allbool CUtility::isNum(CString csInput){//將字串一個一個字元拆出來判斷是否是數字char cTemp;int nStringLength = csInput.GetLength();bool bReturnValue = true;for (int nLoopindex = 0;

GTK如何建立一個帶映像的按鈕?

GtkButton繼承自GtkBin,所以,要想做image button,特簡單。如果是只需要放上一個image的button,如下: GtkWidget *hbox, *playbtn, *pausebtn, *stopbtn, *placeholder, *dlabel; GtkWidget *playimg, *pauseimg, *stopimg; hbox = gtk_hbox_new(FALSE, 5); playbtn =

為什麼去掉了/FC編譯選項,__FILE__宏出來的內容還帶有全路徑?

MSDN中說,__FILE__宏展開後是表示源檔案的名字。如果在編譯選項中加入/FC,那麼,出來的源檔案的名字就包含全路徑,否則,名字就包含相對路徑。很顯然,我們希望名字包含相對路徑,全路徑太長,看起來太累。所以,在visual studio中,項目屬性設定中,最後的編譯命令列中我check了一下,沒有發現/FC。但是奇怪的是程式啟動並執行時候,發現__FILE__出來的源檔案照樣包含全路徑。google 一下,發現了原因:/ZI

如何枚舉系統中的進程

1、首先需要include一個檔案,如下: #include <tlhelp32.h> 2、參看以下代碼: Code: Select all     //遍曆系統所有進程,殺死聯眾世界HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);PROCESSENTRY32 *info = new PROCESSENTRY32;info->dwSize = sizeof(PROCESSENTRY32);     

分配buffer用來儲存字串時,始終多分配一個字元,make all string functions HAPPY!

SDClient中,使用HeapAlloc分配了一塊記憶體,用來存放從text resource file中讀出的內容。然後接著會使用_tcstok_s來使用\n作為token來split這個大字串。那 為什麼在分配記憶體的時候,要多分配一個字元的記憶體呢?很簡單,這個字元要存放一個\0。因為text resource file檔案的最後沒有\0,所以,當把text resource

strsafe.h的include次序問題

strsafe.h不能在windows.h, tchar.h, 包括很多C++的標頭檔,比如<map>,之前被include。否則編譯的時候就會報windows.h, tchar.h, winbase.h...這些標頭檔中定義錯誤,或是重複定義。 所以,安全的做法是: 1. 在cpp檔案中include <strsafe.h>,因為一般要include這個檔案,都是要使用StringCch*函數,這些函數的使用一般都是在cpp中。 2.

總頁數: 61357 1 .... 9878 9879 9880 9881 9882 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.