作者查詢 / GNUGCC

總覽項目: 發文 | 留言 | 暱稱
作者 GNUGCC 在 PTT [ C_and_CPP ] 看板的留言(推文), 共492則
限定看板:C_and_CPP
看板排序:
[問題] 請問一個.cpp檔與.h中define的作用
[ C_and_CPP ]20 留言, 推噓總分: +4
作者: Zoxge - 發表於 2013/08/12 00:30(12年前)
7FGNUGCC:這個用法比較有可能是 xxx.cpp 有 void FUNCTION(void){}08/12 22:07
8FGNUGCC:的實體,所以 include "xxx.h" 遇到函式原型就不需加上08/12 22:09
9FGNUGCC:extern,編譯器能判斷屬內部連結,那其他 .cpp 檔如果08/12 22:10
10FGNUGCC:include "xxx.h" 而沒有 void FUNCTION(void){} 實體的話,08/12 22:10
11FGNUGCC:就會遇到 extern void FUNCTION(void); 的定義了,編譯器會08/12 22:12
12FGNUGCC:把呼叫 FUNCTION() 函式的敘述交給 Linker 來處理,而不用等08/12 22:13
13FGNUGCC:到全部 .cpp 檔編譯完後發現沒有 FUNCTION 實體才交給08/12 22:14
14FGNUGCC:Linker 處理外部連結,純粹是編譯效率的考量.08/12 22:15
[問題] dll檔遺失有人知道解決方法嗎?
[ C_and_CPP ]9 留言, 推噓總分: +2
作者: victor770409 - 發表於 2013/08/11 03:20(12年前)
7FGNUGCC:可以試著使用 LoadLibrary() 與 GetProcAddress() 函式.08/11 20:31
Re: [問題] 擷取到的字串轉換成變數
[ C_and_CPP ]9 留言, 推噓總分: +2
作者: GNUGCC - 發表於 2013/08/10 00:54(12年前)
4FGNUGCC:利用 template class map<> 的方式也是可以的,但產生出來的08/10 23:00
5FGNUGCC:執行檔會變大,因為它包含很多程式碼在裡面,但好處是很方便08/10 23:02
6FGNUGCC:提供部份可操作的演算法,但如果各位有看過 map<> 的原始碼08/10 23:04
7FGNUGCC:就能看出 map<> 是以紅黑樹當做它儲存資料容器,對只儲存小08/10 23:07
8FGNUGCC:型的資料來說等於是殺雞用牛刀.08/10 23:09
Re: [問題] 傳遞多個引數是否會自動建構成類別物件
[ C_and_CPP ]98 留言, 推噓總分: +21
作者: GNUGCC - 發表於 2013/08/10 00:03(12年前)
4FGNUGCC:void main(void) 的寫法是可行的唷^^08/10 00:59
6FGNUGCC:雖然這個寫法較傳統,但是語法與文法都正確哦^^08/10 02:16
13FGNUGCC:大部份範例程式都是使用 int main(void) 然後回傳一個 0 給08/10 20:14
14FGNUGCC:作業系統,但如果這真的是標準,那編譯器顯然會出現錯誤了.08/10 20:17
15FGNUGCC:目前我使用的 Visual C++ 都接受 void main(void) 與08/10 20:18
17FGNUGCC:int main(void),各位可以把 C++ 專案改成原生 C++ 類型來08/10 20:19
19FGNUGCC:用 void main(void) 來寫發現也可通過編譯.08/10 20:21
21FGNUGCC:呵呵~我沒用過 Apple 的,我使用的 Turbo C++ 與08/10 20:25
22FGNUGCC:Borland C++, Windows 的 Visual C++ 任何版本的原生 C++08/10 20:25
24FGNUGCC:專案都可用 void main(void) 方式,C++ .Net 專案似乎也是跟08/10 20:27
25FGNUGCC:著標準走.08/10 20:29
28FGNUGCC:其實這是完全看個人編碼風格,但如果編譯器不接受 void 的08/10 20:46
29FGNUGCC:方式那就需改用 int 了,g++ 的標準是對的,因為它符合文件規08/10 20:48
30FGNUGCC:範,Visual C++ 的方式也不能說是錯的,只是它保留了傳統與彈08/10 20:49
31FGNUGCC:性,至於怎麼使用就看個人怎麼選擇了^^08/10 20:50
33FGNUGCC:語法是對的,但是否符合規範完全取決於編譯器了.08/10 20:55
36FGNUGCC:void main(void) 與 int main(void) 都是屬於 C 與 C++ 的08/10 22:36
37FGNUGCC:主程式,這個在 16 bit 時代是可用的,就好像是 Windows API08/10 22:39
38FGNUGCC:有支援 16 bit 與 32 bit,那為什麼 Windows 還持續保留了08/10 22:41
39FGNUGCC:16 bit 的版本,要使用那一個版本見人見智了^^08/10 22:44
40FGNUGCC:更簡單的說是「不符合規範不代表不可以用」.08/10 22:56
43FGNUGCC:這個就是屬於相容性的議題了,因為必竟 C++ 程式在經過編譯08/10 23:17
44FGNUGCC:後會產生組合語言程式,然後再透過組譯與連結產生出機器碼,08/10 23:18
45FGNUGCC:只要能產生出 x86 指令碼為何不用?08/10 23:20
47FGNUGCC:哈~好像違背原始議題了...^^08/10 23:29
53FGNUGCC:Feis : int Q_Q() 這個語法正確但是欠缺可讀性.08/11 00:43
54FGNUGCC:uranusjr : 並非不尊重 GCC,純屬個人編碼風格,況且這個寫法08/11 00:46
55FGNUGCC:對於一些從 16 bit 時代開始就在寫程式的人就知道代表的意08/11 00:47
56FGNUGCC:義.08/11 00:49
63FGNUGCC:沒錯,只是相容性的問題,如果編譯器不支援舊式寫法就必需改08/11 06:57
64FGNUGCC:成新式了,重點是舊式跟新式的寫法都必需了解然後從中擇一.08/11 06:59
74FGNUGCC:Visual C++ 有支援舊式的寫法並且編譯不會有任何錯誤跟警告08/11 20:21
75FGNUGCC:有它的功能所在,它可以相容於舊式寫法而不必重新修改,08/11 20:22
76FGNUGCC:這個就是 Visual C++ 的彈性.08/11 20:23
77FGNUGCC:我剛把 void main(void) 與 int main(void) 轉換成組合語言08/11 20:24
78FGNUGCC:的結果就是,這 2 種寫法導致組合語言碼相同,也就是這樣:08/11 20:24
79FGNUGCC:xor ax,ax08/11 20:25
80FGNUGCC:ret08/11 20:25
81FGNUGCC:顯示作業系統會從 ax 取得為 0 的數值.08/11 20:26
82FGNUGCC:所謂的編碼風格不代表一定要這樣做,只是個人寫碼習慣不同,08/11 20:27
83FGNUGCC:要怎麼使用完全取決於屬於自已的習慣.08/11 20:28
86FGNUGCC:呵呵~ Visual C++ 好像不會修改客戶端的程式碼唷^^08/11 20:49
87FGNUGCC:各人編碼風格與 ID 無關...請各位不要做過多的連想^^08/11 20:51
91FGNUGCC:我用 Visual C++ 2008 以 Debug 啟動反組譯看到原始碼沒變08/12 20:06
92FGNUGCC:唷^^但組合語言卻是相同的.08/12 20:07
93FGNUGCC:Visual C++ 6.0 更簡潔,只有這段組合語言程式 :08/12 20:08
94FGNUGCC:ret 208/12 20:08
95FGNUGCC:顯然 Visual C++ 2008 會再次確認 eax 暫存器為 0,只是少用08/12 20:10
96FGNUGCC:了 2 個位元組的堆疊空間,各位可以試看看.08/12 20:11
[問題] Project中 bin跟lib的差別
[ C_and_CPP ]10 留言, 推噓總分: 0
作者: NoStra - 發表於 2013/08/02 23:24(12年前)
3FGNUGCC:其實 bin 跟 Lib 都內含可以執行的 80x86 機器指令,但 bin08/04 21:38
4FGNUGCC:只僅限於單一原始碼對應的, Lib 可以想成是由多個 bin 檔集08/04 21:40
5FGNUGCC:合於一體的檔案,因為它內容眾多,所以稱之為 Library,它可以08/04 21:43
6FGNUGCC:包含很多甚至無相關種類的函式庫在同一個 Lib 檔案內,以供08/04 21:44
7FGNUGCC:軟體開發時利於呼叫使用,Windows 的 DLL 檔也有相同的功能,08/04 21:45
8FGNUGCC:只不過它是屬於動態載入,只要有在程式需要使用時才載入,那08/04 21:46
9FGNUGCC:跟一般的 Lib 檔相比, Lib 檔是在 Link 時以靜態連結的方式08/04 21:47
10FGNUGCC:copy 一份副本到程式內,程式大小相對的較大一些了.08/04 21:48
[問題] 如何利用到多核心
[ C_and_CPP ]11 留言, 推噓總分: +1
作者: c0758 - 發表於 2013/08/02 17:03(12年前)
6FGNUGCC:執行緒的技術在雙核心出產以前就有了,作業系統會根據硬體特08/02 23:45
7FGNUGCC:性搭配板驅動程式提供的功能決定你電腦的速度,其實是有方法08/02 23:48
8FGNUGCC:強制系統利用多核心的方式執行程式, Visual C++ 2010 提供08/02 23:51
9FGNUGCC:ppl.h 函式庫提供平行處理工具,它會自動處理平行執行模式.08/02 23:53
10FGNUGCC:上述提供的方式使用之前必需先確定你的 CPU 有多核心功能.08/02 23:55
[問題] 利用C做中斷服務
[ C_and_CPP ]30 留言, 推噓總分: +7
作者: a0916327869 - 發表於 2013/07/31 16:58(12年前)
13FGNUGCC:在 C 語言中呼叫系統中斷的方法是利用 intdos(), intdosx()07/31 22:54
14FGNUGCC:int86(), int86x() 函式, 前 2 個只能呼叫 Dos 中斷,後者可07/31 22:55
15FGNUGCC:呼叫 Dos 與 Bios, 在實體位址模式下這些函式都可以使用,但07/31 22:56
16FGNUGCC:如果要在保護模式下使用,以 Windows 來說的話,必需要利用07/31 23:02
17FGNUGCC:VxD 的技術來做,例如像是裝置驅動程式或者是系統核心程式才07/31 23:03
18FGNUGCC:能完全使用系統全部的功能.07/31 23:05
[問題] VC++ call VB.NET DLL
[ C_and_CPP ]22 留言, 推噓總分: +4
作者: clv - 發表於 2013/07/27 22:31(12年前)
1FGNUGCC:請問你的 VB.Net 的 x.dll 檔有用到 .Net 物件嗎?07/28 01:00
2FGNUGCC:如果有的話你的 Visual C++ 必需設定為使用 CLR 功能才能使07/28 01:04
3FGNUGCC:用 .Net 物件喔...因為就算找到函式位址也無法呼叫.07/28 01:07
5FGNUGCC:簡單說就是包含 .Net 程式無法跟純 CPU 指令碼程式一起使用07/28 18:39
9FGNUGCC:LoadLibrary() 跟 GetProcAddress() 這 2 個函式是針對原生07/28 23:57
10FGNUGCC:DLL 檔使用,所謂的原生就是指裡面包含的是 x86 指令集機器07/28 23:59
11FGNUGCC:碼,它不需要有 .Net 虛擬機器就能交給 CPU 執行,但相對的07/29 00:00
12FGNUGCC:使用 .Net 產生出來的任何執行檔包括 .DLL 檔它裡面並沒有07/29 00:04
13FGNUGCC:機器指令,它跟 Java 一樣是屬於中介語言檔,它需要有虛擬機07/29 00:05
14FGNUGCC:器轉換成真正的機器碼才能執行,當你執行原生 C++ 程式時系07/29 00:08
15FGNUGCC:統並不會交給虛擬機器做解碼而是由 CPU 直接執行,因為 .Net07/29 00:13
16FGNUGCC:包含太多的資料型態定義與函式庫需要做動態連結,因為直接跳07/29 00:17
17FGNUGCC:過虛擬機器,作業系統就會找不到原生 C++ 程式要使用的 .Net07/29 00:20
18FGNUGCC:資料型態與物件了.07/29 00:21
[問題] C pointer
[ C_and_CPP ]10 留言, 推噓總分: +1
作者: ptt1ptt2ptt3 - 發表於 2013/07/27 11:45(12年前)
9FGNUGCC:應該是說 a 本身可以當成指標來使用,所以 int *p = a + 1;07/28 01:30
10FGNUGCC:那 *p == *(a + 1); 這個條件就會成立了07/28 01:31
Re: [問題] VC++ 2003 呼叫 C# dll
[ C_and_CPP ]8 留言, 推噓總分: 0
作者: GNUGCC - 發表於 2013/07/25 01:31(12年前)
2FGNUGCC:Unmanaged C++ 與 C# 可以看成是 Dos 與 Windows 程式之間07/27 17:14
3FGNUGCC:的關連性,Windows 程式無法在 Dos 下執行因為缺少 Windows07/27 17:16
4FGNUGCC:支援,同樣的 C# 它本身也無法與純包含 CPU 指令碼的執行檔07/27 17:18
5FGNUGCC:配合使用,因為檔案包含的內容完全不一樣,C# 其實就跟 Java07/27 17:20
6FGNUGCC:一樣需要有虛擬機器的解碼才能轉換成 CPU 指令碼才能執行,07/27 17:21
7FGNUGCC:要使用 C# 必需不能是 Unmanaged C++ 程式,而是要設定為07/27 17:23
8FGNUGCC:Managed C++ 特性的程式才能與 C# 搭配使用.07/27 17:24