2017年12月29日 星期五

好文 - 水管規格,4分管、6分管水管的直徑,絲口螺紋





公稱直徑(即大約的內直徑):


在工程設計中用DN 多少表示(單位mm )

4分=DN15即內直徑15mm 左右,外直徑加上管厚度大約20mm 左右,其余類推,

4分=DN15 

6分=DN20

1寸=DN25。


4分管=DN15(公稱直徑為15)=4/8英寸=1/2英寸 

6分管=DN20(公稱直徑為20)=6/8英寸=3/4英寸

8分管=DN25(公稱直徑為25)=8/8英寸=1英寸,常用稱1寸管,不說是8分管;

因此:稱XXX 分管是指英寸說法,公稱直徑:既不是外徑,也不是內徑,是與標准配件相配套的尺寸。

[windows] 批次壓縮zip, 7z檔,將目錄下檔案自動壓縮批次指令





 for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.zip" "%%X\"

2017年12月12日 星期二

[C++] 宏定義


c/c++預處理過程詳解(一)之文件包含、宏定義



其實本文原本是打算研究一下#define的,後來發現預處理是個不可避免的問題。

在講#define 前需要講講 #

# 涉及到宏的概念,宏是編譯器預處理的一個重要步驟

 

先講講預處理吧,因為預處理是c/c++的一個重要知識點

在C語言的程序中可包括各種以符號#開頭的編譯指令,這些指令稱為預處理命令。

預處理命令屬於C語言編譯器,而不是C語言的組成部分。

 在集成開發環境中,編譯,鏈接是同時完成的。其實,C語言編譯器在對源代碼編譯之前,還需要進一步的處理:預編譯。













一、#define的基本用法

    #define是C語言中提供的宏定義命令,其主要目的是為程序員在編程時提供一定的方便,並能在一定程度上提高程序的運行效率,但學生在學習時往往不能 理解該命令的本質,總是在此處產生一些困惑,在編程時誤用該命令,使得程序的運行與預期的目的不一致,或者在讀別人寫的程序時,把運行結果理解錯誤,這對 C語言的學習很不利。

1 #define命令剖析

1.1   #define的概念

    #define命令是C語言中的一個宏定義命令,它用來將一個標識符定義為一個字符串,該標識符被稱為宏名,被定義的字符串稱為替換文本。
該命令有兩種格式:一種是簡單的宏定義,另一種是帶參數的宏定義。

(1)簡單的宏定義:
#define <宏名>  <字符串>
例: #define PI 3.1415926
(2) 帶參數的宏定義
 
#define <宏名> (<參數表>) <宏體>
例: #define A(x) x
    一個標識符被宏定義後,該標識符便是一個宏名。這時,在程序中出現的是宏名,在該程序被編譯前,先將宏名用被定義的字符串替換,這稱為宏替換,替換後才進行編譯,宏替換是簡單的替換。

1.2 宏替換發生的時機

    為了能夠真正理解#define的作用,讓我們來了解一下對C語言源程序的處理過程。當我們在一個集成的開發環境如Turbo C中將編寫好的源程序進行編譯時,實際經過了預處理、編譯、彙編和連接幾個過程。其中預處理器產生編譯器的輸出,它實現以下的功能:
(1)文件包含
    可以把源程序中的#include 擴展為文件正文,即把包含的.h文件找到並展開到#include 所在處。
(2)條件編譯
    預處理器根據#if和#ifdef等編譯命令及其後的條件,將源程序中的某部分包含進來或排除在外,通常把排除在外的語句轉換成空行。
(3)宏展開
    預處理器將源程序文件中出現的對宏的引用展開成相應的宏 定義,即本文所說的#define的功能,由預處理器來完成。
    經過預處理器處理的源程序與之前的源程序有所有不同,在這個階段所進行的工作只是純粹的替換與展開,沒有任何計算功能,所以在學習#define命令時只要能真正理解這一點,這樣才不會對此命令引起誤解並誤用。

2 #define使用中的常見問題解析

2.1 簡單宏定義使用中出現的問題

    在簡單宏定義的使用中,當替換文本所表示的字符串為一個表達式時,容易引起誤解和誤用。如下例:
   
例1 #define N 2+2
void main()
{
   int a=N*N;
   printf("%d",a);
}
    (1) 出現問題:
 
    在此程序中存在著宏定義命令,宏N代表的字符串是2+2,在程序中有對宏N的使用,一般同學在讀該程序時,容易產生的問題是先求解N為2+2=4,然後在程序中計算a時使用乘法,即N*N=4*4=16,其實該題的結果為8,為什麼結果有這麼大的偏差?

    (2) 問題解析:
 
    如1節所述,宏展開是在預處理階段完成的,這個階段把替換文本只是看作一個字符串,並不會有任何的計算發生,在展開時是在宏N出現的地方 只是簡單地使用串2+2來代替N,並不會增添任何的符號,所以對該程序展開後的結果是a=2+2*2+2,計算後=8,這就是宏替換的實質,如何寫程序才能完成結果為16的運算呢?

    (3)解決辦法:
 
/*將宏定義寫成如下形式*/
#define N (2+2)
/*這樣就可替換成(2+2)*(2+2)=16*/

2.2 帶參數的宏定義出現的問題

    在帶參數的宏定義的使用中,極易引起誤解。例如我們需要做個宏替換能求任何數的平方,這就需要使用參數,以便在程序中用實際參數來替換宏定義中的參數。一般學生容易寫成如下形式:
#define area(x) x*x
/*這在使用中是很容易出現問題的,看如下的程序*/

void main()
{
    int y = area(2+2);
    printf("%d",y);
}
    按理說給的參數是2+2,所得的結果應該為4*4=16,但是錯了,因為該程序的實際結果為8,仍然是沒能遵循純粹的簡單替換的規則,又是先計算再替換 了,在這道程序裡,2+2即為area宏中的參數,應該由它來替換宏定義中的x,即替換成2+2*2+2=8了。那如果遵循(1)中的解決辦法,把2+2 括起來,即把宏體中的x括起來,是否可以呢?#define area(x) (x)*(x),對於area(2+2),替換為(2+2)*(2+2)=16,可以解決,但是對於area(2+2)/area(2+2)又會怎麼樣呢,有的學生一看到這道題馬上給出結果,因為分子分母一樣,又錯了,還是忘了遵循先替換再計算的規則了,這道題替換後會變為 (2+2)*(2+2)/(2+2)*(2+2)即4*4/4*4按照乘除運算規則,結果為16/4*4=4*4=16,那應該怎麼呢?解決方法是在整個宏體上再加一個括號,即#define   area(x) ((x)*(x)),不要覺得這沒必要,沒有它,是不行的。
    要想能夠真正使用好宏定義,那麼在讀別人的程序時,一定要記住先將程序中對宏的使用全部替換成它所代表的字符串,不要自作主張地添加任何其他符號,完全展開後再進行相應的計算,就不會寫錯運行結果。
    如果是自己編程使用宏替換,則在使用簡單宏定義時,當字符串中不只一個符號時,加上括號表現出優先級,如果是帶參數的宏定義,則要給宏體中的每個參數加上括號,並在整個宏體上再加一個括號。看到這裡,不禁要問,用宏定義這麼麻煩,這麼容易出錯,可不可以摒棄它, 那讓我們來看一下在C語言中用宏定義的好處吧。
如:
#include <iostream.h>
#define product(x)    x*x
int main()
{
    int i=3;
    int j,k;
    j = product(i++);
    cout<<"j="<<j<<endl;
    cout<<"i="<<i<<endl;
    k = product(++i);
    cout<<"k="<<k<<endl;
    cout<<"i="<<i<<endl;
    return 0;
}
依次輸出結果:
j=9;i=5;k=49;i=7


3 宏定義的優點

(1)   方便程序的修改

    使用簡單宏定義可用宏代替一個在程序中經常使用的常量,這樣在將該常量改變時,不用對整個程序進行修改,只修改宏定義的字符串即可,而且當常量比較長時, 我們可以用較短的有意義的標識符來寫程序,這樣更方便一些。我們所說的常量改變不是在程序運行期間改變,而是在編程期間的修改,舉一個大家比較熟悉的例子,圓周率π是在數學上常用的一個值,有時我們會用3.14來表示,有時也會用3.1415926等,這要看計算所需要的精度,如果我們編制的一個程序中 要多次使用它,那麼需要確定一個數值,在本次運行中不改變,但也許後來發現程序所表現的精度有變化,需要改變它的值, 這就需要修改程序中所有的相關數值,這會給我們帶來一定的不便,但如果使用宏定義,使用一個標識符來代替,則在修改時只修改宏定義即可,還可以減少輸入 3.1415926這樣長的數值多次的情況,我們可以如此定義 #define   pi   3.1415926,既減少了輸入又便於修改,何樂而不為呢?

(2) 提高程序的運行效率

    使用帶參數的宏定義可完成函數調用的功能,又能減少系統開銷,提高運行效率。正如C語言中所講,函數的使用可以使程序更加模塊化,便於組織,而且可重復利用,但在發生函數調用時,需要保留調用函數的現場,以便子 函數執行結束後能返回繼續執行,同樣在子函數執行完後要恢復調用函數的現場,這都需要一定的時間,如果子函數執行的操作比較多,這種轉換時間開銷可以忽 略,但如果子函數完成的功能比較少,甚至於只完成一點操作,如一個乘法語句的操作,則這部分轉換開銷就相對較大了,但使用帶參數的宏定義就不會出現這個問 題,因為它是在預處理階段即進行了宏展開,在執行時不需要轉換,即在當地執行。宏定義可完成簡單的操作,但復雜的操作還是要由函數調用來完成,而且宏定義所占用的目標代碼空間相對較大。所以在使用時要依據具體情況來決定是否使用宏定義。

4 結語

    本文對C語言中宏定義#define在使用時容易出現的問題進行了解析,並從C源程序處理過程的角度對#define的處理進行了分析,也對它的優點進行 了闡述。只要能夠理解宏展開的規則,掌握使用宏定義時,是在預處理階段對源程序進行替換,只是用對應的字符串替換程序中出現的宏名,這樣就可在正確使用的 基礎上充分享受使用宏定義帶來的方便和效率了

二、define中的三個特殊符號:#,##,#@

#define Conn(x,y) x##y
#define ToChar(x) #@x
#define ToString(x) #x
(1)x##y表示什麼?表示x連接y,舉例說:
int n = Conn(123,456); /* 結果就是n=123456;*/
char* str = Conn("asdf", "adf"); /*結果就是 str = "asdfadf";*/
(2)再來看#@x,其實就是給x加上單引號,結果返回是一個const char。舉例說:
char a = ToChar(1);結果就是a='1';
做個越界試驗char a = ToChar(123);結果就錯了;
但是如果你的參數超過四個字符,編譯器就給給你報錯了!
error C2015: too many characters in constant   :P
(3)最後看看#x,估計你也明白了,他是給x加雙引號
char* str = ToString(123132);就成了str="123132";
三、常用的一些宏定義

1 防止一個頭文件被重復包含 
#ifndef BODYDEF_H 
#define BODYDEF_H 
 //頭文件內容 

Thread Local Storage






https://msdn.microsoft.com/zh-tw/library/windows/desktop/ms686749(v=vs.85).aspx

C Runtime Library 的來歷, API, STL, MFC, ATL關系

 
C Runtime Library 的來歷, API, STL, MFC, ATL關系


msvcrt.dll (名稱:Microsoft C Runtime Library)提供了printf,malloc,strcpy等C語言庫函數,並且為使用C/C++(Vc)編繹的程序提供了初始化(如獲取命令行參數)以及退出等功能.


一、
Windows平台下的開發有多個不同的體系:標准C,Windows API,MFC,STL。這些都是預先編寫好的庫,實際開發時選哪個,取決於項目的規模和性質、程序的風格,還有個人的喜好。



1. CRT

  運行時庫就是C Run-Time Library,是C而非C++語言世界的概念。取這個名字就是因為你的C程序運行時需要這些庫中的函數。

  C語言是所謂的"小內核"語言,就其語言本身來說很小(不多的關鍵字,程序流程控制,數據類型等);所以,C語言內核開發出來之後, Dennis Ritchie 和 Brian Kernighan 就用C本身重寫了 90% 以上的 UNIX 系統函數,並且把其中最常用的部分獨立出來,形成頭文件和對應的 LIBRARY,C run-time library 就是這樣形成的。

  C Run-Time Library裡面含有初始化代碼,還有錯誤處理代碼(例如divide by zero處理)。你寫的程序可以沒有 math庫,程序照樣運行,只是不能處理復雜的數學運算,不過如果沒有了C Run-Time Library,main()就不會被調用,exit()也不能被響應。因為C Run-Time Library包含了C程序運行的最基本和最常用的函數。



2. Standard C++ Library

  到了 C++ 世界裡,有另外一個概念:Standard C++ Library,它包括了上面所說的C Run-Time Library和STL。包含C Run-Time Library的原因很明顯,C++ 是 C 的超集,沒有理由再重新來一個 C ++ run-time library。VC針對C++ 加入的Standard C++ Library主要包括:LIBCP.LIB, LIBCPMT.LIB和 MSVCPRT.LIB。



二、Microsoft的C\C++

1. Windows中的CRT

  CRT原先是指Microsoft開發的C Runtime Library,用於操作系統的開發及運行。後來在此基礎上開發了C++ Runtime Library,所以現在CRT是指Microsoft開發的C/C++ Runtime Library。在VC的CRT/SRC目錄下,可以看到CRT的源碼,不僅有C的,也有C++的。

  CRT原先的目的就是支持操作系統的運行。因為Windows操作系統除彙編部分外,都是用C/C++編寫的,所以內核及許多關鍵服務都在CRT上運行(它們都采用dll技術動態鏈接)。此外,用 VC編寫的C/C++程序也用到它們(可以動態鏈接,也可以靜態鏈接,前者運行時需要系統中已安裝CRT的dll,後者不需要)。可以說,CRT就是 Microsoft編寫Windows時使用的低層類庫。然後,它又被當作C++標准庫的一個實現包含在了VC系列中;我們在VC中使用的C++標准庫,其實就是CRT的一個真子集(少了C++標准所不包含的代碼,特別是大量的低層C代碼)

  C++標准,是C++的通用語言規範,指導所有C ++使用者。而CRT的其中一部分可以看作是Microsoft開發的一個C++標准庫實現(其實也確實如此,Microsoft在開發CRT時,參考了正在標准化過程中的C++語言規範)。它與C++標准有一定的差距,部分原因是,在C++沒有完成標准化之前,CRT已經開發並投入使用了。為了向下兼容以前的Windows代碼,早期的CRT與C++標准總有一定的差距。但是CRT確實在不斷的改進中。VC6帶的CRT與C++標准還有比較大的差距,而 VC8的幾乎完全符合C++標准了。


2. Windows中的CRT與Windows API

  至於CRT與WINDOWS API的關系,與許多人理解的相反,WINDOWS API作為Windows的一部份,是在CRT的基礎上開發的。你可以將Windows(及其API)看作一個項目,而這個項目使用的語言是彙編/C/C ++,使用的類庫就是CRT。所以,離開CRT,Windows API也無法使用的。

  在編寫操作系統時,你需要一個合適的低層庫,以便完成一些基本的、多次重復的工作。於是,就有了CRT。在最低層的時候,根本連DLL這個概念都沒有的,所以CRT的源代碼只能做成lib,被靜態鏈接。然後,隨著Windows越做越復雜,Microsoft提出了API的概念,它提供Windows開發者一組接口,可以直接操作Windows,這就是Windows API了。當然,Windows API也是在CRT之上編寫的。

  接著,Microsoft想給予C/C++程序員以足夠的支持,除了原始CRT之外,還要增加在Windows平台上編程所特有的東西,如thread等等。這些東西都是和平台相關的,只能建立在Windows API上。而這些新增內容,也被放進了CRT中。此時,CRT不僅僅包含最低層平台無關的代碼,還包括平台相關的部分。如你調用CRT的 _beginthread,其實內部調用了Windows API的CreateThread。加入這些東西後,CRT仍然被用作編寫操作系統;但是顯然,那些調用了Windows API的部分已經失去移值性了。

  然後,CRT被封裝成產品,隨編譯器一起發布。此時CRT產品的LIB和DLL都是Windows格式的,你不能在Windows以外的平台上使用EXE或DLL吧,這就是CRT和CRT產品的區別。Windows API的產品,或是Windows的其他許多組成部分也是一些LIB/DLL文件,這些都是表面的東西,是與Windows綁定在一起的。但是,如果你認為是先有Windows或Windows API,才有CRT的,那你就本末倒置了。除非你對CRT的定義就是那些LIB/DLL產品,而不包括用來產生它們的代碼。

  當然,CRT的一些組成部分也調用了Windows API。這可能就是有人認為CRT是建立的Windows API基礎上的原因。但是實際上,這一部分剝離CRT沒有任何的問題。只不過Microsoft將在Windows平台上可以使用的C/C++低層庫都加入到CRT中。因此,CRT中很大一部分是操作系統平台無關的(原始的CRT),是開發Windows本身及其上一切的基礎。它們也可以作為一個C/C+ +庫在其他操作系統平台上使用。還有一部分,則是和Windows緊密綁定的,調用Windows API來實現的,可以看作擴展的CRT。之所以將這兩部分放在一起,是因為它們都是開發Windows操作系統所需要的,也因為它們也都是Windows 平台上的C/C++程序員所需要的。這種復雜關系是Microsoft的人為因素造成的,不能因此認為CRT是建立在Windows或Windows API基礎上的。

  綜上,CRT(Microsoft's C/C++ Runtime Library)的一個真子集(主要是C++ Runtime Library)是一個符合(或至少是企圖符合)C++標准的C++庫。而Windows API(以及Windows的其他許多部分)都是在CRT的基礎上開發的。

  最後再說一句,C++當然不是Microsoft的專利。但是Microsoft選擇了C++,並取得了成功,這是肯定的了:像CRT,像VC,像Windows,像Office,像 SQL Server等等。



6)Windows環境下,VC提供的 C run-time library又分為動態運行時庫和靜態運行時庫。 
動態運行時庫主要是DLL庫文件msvcrt.dll(or MSVCRTD.DLL for debug build),對應的Import library文件是MSVCRT.LIB(MSVCRTD.LIB for debug build)


靜態運行時庫(release版)對應的主要文件是: 
LIBC.LIB (Single thread static library, retail version) 
LIBCMT.LIB (Multithread static library, retail version) 
msvcrt.dll提供幾千個C函數,即使是像printf這麼低級的函數都在msvcrt.dll裡。其實你的程序運行時,很大一部分時間時在這些運行庫裡運行。在你的程序(release版)被編譯時,VC會根據你的編譯選項(單線程、多線程或DLL)自動將相應的運行時庫文件  (libc.lib,libcmt.lib或Import library msvcrt.lib)鏈接進來。


編譯時到底哪個C run-time library聯入你的程序取決於編譯選項: 
/MD, /ML, /MT, /LD   (Use Run-Time Library)



http://blog.csdn.net/nodeathphoenix/article/details/8288233

DotNet vs WinAPI vs WinRT











https://commons.wikimedia.org/wiki/File:DotNet_vs_WinAPI.svg
https://blogs.msdn.microsoft.com/davidni/2015/01/19/winrt-xaml-for-serious-beginners-where-are-we-navigating-win32-mfc-gdi-gdi-windows-forms-wpf-silverlight-windows-runtime-winrt-and-windows-phone/


[MFC]Message Map Macros



Begins the definition of your message map.



BEGIN_MESSAGE_MAP( theClass, baseClass )  

Parameters:

theClass
Specifies the name of the class whose message map this is.

baseClass
Specifies the name of the base class of theClass.


EX:

BEGIN_MESSAGE_MAP(CSystem_disk_power_cycle_STM32, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_DEVICECHANGE, OnDeviceChange)
ON_WM_SYSCOMMAND()
ON_WM_TIMER()

ON_BN_CLICKED(IDC_BTN_SAVE, OnBtnSave)
// ON_MESSAGE(WM_GO_SYSTEM, OnUpdateMSG)

END_MESSAGE_MAP()




.
.
.
.
.


Header: afxmsg_.h

ON_MESSAGE
Indicates which function will handle a user-defined message.

Syntax

Copy
ON_MESSAGE( message, memberFxn ) 


ex:

#define WM_MYMESSAGE (WM_USER + 100)

BEGIN_MESSAGE_MAP(CMyWnd2, CWnd)
   ON_MESSAGE(WM_MYMESSAGE, OnMyMessage)
END_MESSAGE_MAP()

// inside the class declaration
 afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);

 LRESULT CMyWnd2::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
   UNREFERENCED_PARAMETER(wParam);
   UNREFERENCED_PARAMETER(lParam);

   // Handle message here. 

   return 0;
}


.
.
.


WM_APP

Used to define private messages, usually of the form WM_APP+x, where x is an integer value.
#define WM_APP                          0x8000

Range Meaning

0 through WM_USER –1
Messages reserved for use by the system.

WM_USER through 0x7FFF  (0x0400) to (0x7FFF )
Integer messages for use by private window classes.

WM_APP through 0xBFFF (0x8000) to (0xBFFF)
Messages available for use by applications.

0xC000 through 0xFFFF
String messages for use by applications.

Greater than 0xFFFF
Reserved by the system.




https://msdn.microsoft.com/library/windows/desktop/ms644930
https://docs.microsoft.com/en-us/cpp/mfc/reference/message-map-macros-mfc

2017年12月11日 星期一

[VC2013 ] 無法打開RC File, SQL Server Compact4.0



Q:



SOL:
下載:
https://www.microsoft.com/zh-tw/download/confirmation.aspx?id=17876

安裝:
SSCERuntime_x64-CHT.exe

2017年12月6日 星期三

[vc] Version of visual studio, NET Framework SDK, platform tool set



Version of visual studio

Name

number

Build number

Release date

Notes

Microsoft Platform SDK February 2003

?

5.2.3790.0

2003-02

Last version with VC6 support[8] and latest version with Windows 95 and Windows 98 support.

Visual Studio 2003.

?

1.1.4322.573

2003-03-29

 .NET Framework SDK Version 1.1 Visual Studio 2003. Does not include the Platform SDK.

Microsoft Platform SDK for Windows XP SP2

?

5.1.2600.2180

2004-08

Introduced strsafe.h

Windows Server 2003 R2 Platform SDK

?

5.2.3790.2075.51

2006-03-14

Also suggested by MS to work with VS6[9]

Microsoft Windows Software Development Kit for Windows Vista and .NET Framework 3.0 Runtime Components

v6.0

6.0.6000.16384

2006-10-30

The C++ compilers in this SDK release support the /analyze key.

Visual Studio 2005Software Development Kit

?

2.0.50727.42

2006-11-29

.NET Framework 2.0Visual Studio 2005 Professional. Does not include the Platform SDK.

Microsoft Windows Software Development Kit Update for Windows Vista

v6.1

6.1.6000.16384.10

2007-03-22

First unified .NET and Platform SDK. Does not support Visual Studio .NET 2003 and Microsoft Visual C++ Toolkit 2003

Windows SDK for Windows Server 2008

v6.1

6.0.6001.18000.367

2008-02-05

.NET Framework 3.5

Visual Studio 2008

v6.0a

6.1.6723.1

2007-11-19

.NET Framework 3.5 Service Pack 1

Microsoft Windows SDK for Windows 7

v7.0

6.1.7600.16385

2009-07-24

.NET Framework 3.5 SP1

Visual Studio 2010

v7.0a v7.1

7.1.7600.0.30514

2010-05-21[12]

.NET Framework 4. Visual Studio 2010It is the latest version that officially supports Windows XP target.

Microsoft Windows SDK for Windows 8 and .NET Framework 4.5

v8.0

6.2.9200.16384

2012-11-15[13]

.NET Framework 4.5, Windows Store apps and Integrated DirectX SDK

Windows Software Development Kit (SDK) for Windows 8.1

v8.1

8.100.25984.0

2013-10-17

.NET Framework 4.5.1Windows 8.1, Windows Store apps and Integrated DirectX SDK

Microsoft Windows Software Development Kit

3.13.11

Microsoft Win32 Software Development Kit

3.13.53.514.0

Visual Studio 2012

v7.1A v8.0A

8.0.50727

?

v110_xp platform toolset.NET Framework 4.5

Visual Studio 2013

v8.1A

8.1.51636

?

v120_xp platform toolset

Visual Studio 2015

v140_xp platform toolset .NET Framework 4.6

Visual Studio 2017

 

 

 

v141_xpMicrosoft .NET Framework 4.7 ( 4.74.6.24.6.14.64.5.2 3.5)

Windows 10 SDK for Fall Creators Update

v10

10.0.16299.15

2017-10-10

Visual Studio 2017 ver.15.4

 

 

VC++ Redistributable Package

The C Run-time Library (CRT) is the part of the C++ Standard Library that incorporates the ISO C99 standard library

https://www.microsoft.com/zh-TW/download/details.aspx?id=48145

 

 

 

https://en.wikipedia.org/wiki/Microsoft_Windows_SDK

https://msdn.microsoft.com/zh-tw/library/ff770576.aspx

https://msdn.microsoft.com/zh-tw/library/5a4x27ek(v=vs.110).aspx

https://www.visualstudio.com/zh-tw/productinfo/vs2017-compatibility-vs

https://docs.microsoft.com/zh-tw/windows-hardware/drivers/devtest/platform-toolset

 

 

2017年12月5日 星期二

[C++] Lib, Ojb, dll, exe, stack, heap , register







Lib, Ojb, dll, exe, 



stack, heap 








register, Stack 





http://www.bogotobogo.com/cplusplus/assembly.php