在學校學的c語言,的確沒有什么大用,等真正看到項目代碼。只會為自己以前寫的代碼感到自卑。我自己也很垃圾!!許多疑問。
隨便寫幾個吧。#ifdef ,#ifndef , #endif , #if defined , #elif , union enum,extern,static,我感到有點恐怖。你越怕的越是有用的
預編譯項目中用到真多。要搞清楚。
//a.h 頭文件
#ifndef A //可以換成a_h 或者 abc
#define A //可以換成a_h 或者 abc
int AorB(int a)
{ return a;} #endif
// b.h頭文件
#include "a.h"
int CorD(int a)
{ return AorB(a);}
//first.c 主文件
#include "a.h"
#include "b.h"
int main()
{int a = 0;
int b = AorB(a);
int c = CorD(b);
printf("a=%d,b=%d,c=%d\n",a,b,c);
return 0; }
在linux下 gcc -o first first.c
一開始#include<a.h> 到a.h頭文件去了,遇到#ifndef A,滿足條件,所以就把#ifndef A和#endif 之間的東西包含進來,也即定義了define A,A標志,和AorB();A標志相當于信號量。。沒有定義我就定義信號量,同時拿完東西。
#include<b.h> 到b.h投文件中,又#include<a.h>,到 a.h中,遇到#ifndef A, 發現不滿足條件。所以不執行#ifndef A和#endif 之間..也就是a.h只包含一次。到下的CorD()
如果不#ifndef A和#endif 之間則a.h被包含兩次,出錯。。error 這是為了防止頭文件被重復包含。
#ifndef <標識>
#define <標識>
......
#endif
<標識>在理論上來說可以是自由命名的,但每個頭文件的這個“標識”都應該是唯一的。標識的命名規則一般是頭文件名全大寫,前后加下劃線,并把文件名中的“.”也變成下劃線,如:stdio.h
#ifndef _STDIO_H_
#define _STDIO_H_
......
#endif
#if defined A 和#ifdef A 其實是一回事。。還有#if !defined A 和#ifndef A 只是#if defined 可以多個標識符。。例如:#if defined A || defined B 相當于
# ifdef A
..........
#ifdef B
.........
注意::||是或者邏輯運算 |位運算 或
#elif 很恐怖 我以前都沒有見過。
#ifdef A
。。。。
#elif B
。。。。
#else
。。。。
相當與
if()
。。。。
else if()
。。。。
else。。。。
static 講過了,,,隱藏的意思。。全局變量, 初始化。。0.。。
extern 引進外文件終端變量或者函數。。。
//a.c
#include "stdio.h"
void fun(void)
{printf("fun is here\n");}
//hello.c
extern void fun(void);
int main(int argc, char* argv[])
{printf("Hello World!\n");
printf("hello!!\n");
fun();
return 0;}
union 共用體類型。。
union data
{ int i;
char ch;
float f;}
union data a;
a.i=278;
a.ch='D';
a.f=5.789;
最后共用體變量中的值是5.789.
注意::共用體的不同結構體。某一個時刻只存共用體的一種數據值,。結構體所有的成分都存儲。分配共用體的存儲空間大小至少要存儲最大數據所需的空間量。。。

union exx
{
int a,b;
struct {
int c,d;
}lpp;
} e={10}; //第一個格子里是10
枚舉類型:
#include "stdio.h"
void main()
{ enum colorname{red,yellow,blue,white};
enum colorname color;
for(color=red;color<=white;color++)
switch(color)
{
case red: printf("red\n"); break;
case yellow: printf("yellow\n"); break;
case blue: printf("blue\n"); break;
case white: printf("white\n"); break;
}
}
tortoiseSVN客戶端和visual SVN Server服務器
1.1 VisualSVN Server的安裝
1.2 TortoiseSVN的安裝
1.3 TotoiseSVN的基本使用方法 1.3.1 簽入源代碼到SVN服務器 假如我們使用Visual Studio在文件夾StartKit中創建了一個項目,我們要把這個項目的源代碼簽入到SVN Server上的代碼庫中里,首先右鍵點擊StartKit文件夾,這時候的右鍵菜單如下圖所示:




如上圖所示,好了,源代碼已經成功簽入SVN服務器了。這時候團隊成員就可以遷出SVN服務器上的源代碼到自己的機器了。
1.3.2 簽出源代碼到本機

在上圖中URL of Repository:下的文本框中輸入svn server中的代碼庫的地址,其他默認,點擊OK按鈕,就開始簽出源代碼了。 這時候也會彈出對話框,要求輸入用戶名和密碼,通過驗證后即可瀏覽代碼庫中的內容。 搞定!源代碼已經成功簽出到剛才新建的StartKit目錄中。 打開StartKit目錄,可以看到如下圖的文件夾結構: 
一旦你對文件或文件夾做了任何修改,那么文件或文件夾的顯示圖片機會發生變化。下圖中我修改了其中的二個文件:

我們已經知道怎么將源代碼簽入到SVN服務器,怎么從服務器簽出代碼到本機,也簡單了解了不同狀態所對應的圖案啦。
1.3.3 提交修改過的文件到SVN服務器 上面的圖2-2-7中,我修改了位于Model文件中的二個文件ImageInfo.cs和NewsInfo.cs,下面演示如何提交到SVN服務器。 注意:提交源代碼到服務器時,一定確保本機的代碼是最新版本,否則可能提交失敗,或者造成版本沖突。 在Model文件夾上點擊右鍵或在Model文件下的空白處點擊右鍵,點擊SVN Commit…彈出下面的窗體: 
點擊OK按鈕后,彈出如下圖的窗體:圖2-2-10 
|