青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

xyjzsh

猜猜執(zhí)行結(jié)果

static const char *msg[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
char *get_a_day(int idx)
{
 static char buf[20];
 strcpy(buf, msg[idx]);
 return buf;
}

int main()
{
 char *day0 = get_a_day(0);
 char *day1 = get_a_day(1);
 printf("%s %s\n", day0, day1);
 return 0;
}

結(jié)果是什么?

posted @ 2011-07-20 13:52 呆人 閱讀(228) | 評(píng)論 (0)編輯 收藏

error C3872: “0x3000”: 此字符不允許在標(biāo)識(shí)符中使用——快速處理方法

在從別處拷貝代碼到IDE時(shí)經(jīng)常出現(xiàn)這類問(wèn)題。出現(xiàn)問(wèn)題的原因是:存在中文符號(hào),一般為全角下的中文空格。
為了快速出來(lái)這里錯(cuò)誤,可以先把要拷貝的代碼拷貝到word中,用查找替換工具,將所有的全角下的空格,替換為英文下的半角空格。

在vs2008中可以直接用它自帶的查找替換功能。

posted @ 2011-05-17 14:52 呆人 閱讀(1588) | 評(píng)論 (0)編輯 收藏

matlab生成dll后在vc中脫離matlab環(huán)境執(zhí)行

在沒有安裝matlab的機(jī)器上,要想運(yùn)行matlab的dll要必須安裝MCR環(huán)境。
在安裝了matlab的機(jī)器上,在 MATLAB\R2010b\toolbox\compiler\deploy\win32下面有MCR 的安裝程序。
在安裝了MCR的機(jī)器上,就可以運(yùn)行使用了matlab的dll的VC的可執(zhí)行文件。

posted @ 2011-05-16 16:05 呆人 閱讀(469) | 評(píng)論 (0)編輯 收藏

matlab生成dll后在vc中脫離matlab環(huán)境執(zhí)行

在沒有安裝matlab的機(jī)器上,要想運(yùn)行matlab的dll要必須安裝MCR環(huán)境。
在安裝了matlab的機(jī)器上,在 MATLAB\R2010b\toolbox\compiler\deploy\win32下面有MCR 的安裝程序。
在安裝了MCR的機(jī)器上,就可以運(yùn)行使用了matlab的dll的VC的可執(zhí)行文件。

posted @ 2011-05-16 16:05 呆人 閱讀(1600) | 評(píng)論 (0)編輯 收藏

vs2008中調(diào)用matlab生成的dll

matlab版本為:matlab7.11.0(R2010b)
vs2008

1.在matlab中生成dll

在m文件中實(shí)現(xiàn)如下功能:
獲得N個(gè)魔方矩陣的秩。m文件的內(nèi)容如下:
function r = mrank(n)

r = zeros(n,1);
for k=1:n
    r(k) = rank(magic(k));
end

將上述內(nèi)容保存為:mrank.m


在matlab的command 窗口鍵入:
>> mcc -B csharedlib:mrank mrank.m %該命令將在后面做說(shuō)明

在matlab7.0中執(zhí)行上述命令后生成下面幾個(gè)文件:
mrank.exp    mrank.exports   mrank.h   mrank.lib  mrank.c     mrank.dll  

在vs2008中使用m文件的函數(shù)功能。
首先配置vs2008的環(huán)境
1.工具——> 選項(xiàng)——>項(xiàng)目和解決方案——>VC++目錄
(1) 選擇“可執(zhí)行文件”下拉框,添加:C:\Program Files\MATLAB\R2010b\bin\win32(注意:當(dāng)前的Mathlab安裝在C:\Program Files下面)
(2)選擇“包含文件”下拉框,添加:C:\Program Files\MATLAB\R2010b\extern\include
(3)選擇“引用文件”下拉框,添加:C:\Program Files\MATLAB\R2010b\extern\lib
(4)選擇“庫(kù)文件”下拉框,添加:C:\Program Files\MATLAB\R2010b\extern\lib\win32\microsoft
上述環(huán)境只需要配置一次

對(duì)于每一個(gè)工程,做下面的設(shè)置
項(xiàng)目——>屬性——>連接器——>輸入
選擇:附加依賴項(xiàng):添加:
libmex.lib
libmx.lib
libmat.lib
mclmcrrt.lib

將mrank.h  mrank.lib  mrank.dll拷貝到當(dāng)前目錄下
cpp文件中中的內(nèi)容如下:
#include "stdafx.h"
#include<stdlib.h>
#include"matrix.h"
#include"mrank.h"
#include "mclmcrrt.h"
#pragma comment(lib,"mrank.lib")

int main()
{
  mxArray *N(NULL),*R(NULL);
 int n =12;

 mrankInitialize();//初始化動(dòng)態(tài)鏈接庫(kù)
 N = mxCreateDoubleScalar(n);//用n來(lái)初始化生成的數(shù)組,其實(shí)標(biāo)量就是一個(gè)1*1的數(shù)組
 mlfMrank(1,&R,N);//執(zhí)行m文件的主要功能
 
 size_t num = mxGetM(R);//R的行的個(gè)數(shù)
 double *res = new double[num];
 memset(res,0,sizeof(double)*num);

 memcpy(res,mxGetPr(R),sizeof(double)*num);

 for(int i=0;i<num;++i)
  printf("%f\n",res[i]);

 delete[] res;
 mxDestroyArray(N);
 mxDestroyArray(R);
 
 mrankTerminate();//終止動(dòng)態(tài)數(shù)據(jù)連接
return 0;
}

上述cpp文件使用了Matlab編譯m文件生成的dll,在cpp中通過(guò)mxArray這個(gè)數(shù)據(jù)結(jié)構(gòu)來(lái)和dll中的方法進(jìn)行信息交換。
這樣就在cpp中調(diào)用了matlab中的m文件實(shí)現(xiàn)的方法。

mcc命令說(shuō)明:
http://www.cnblogs.com/juneja/archive/2008/10/31/1323423.html

posted @ 2011-05-12 17:28 呆人 閱讀(4619) | 評(píng)論 (0)編輯 收藏

返回值為函數(shù)指針的寫法

下面方法的作用是:通過(guò)key的類型返回對(duì)應(yīng)的哈希函數(shù)的指針

static int (*hashFunction(int keyClass))(const void*,int)
{
/*內(nèi)容省略*/
}

函數(shù)的名字是:hashFunction,該函數(shù)為只有1個(gè)int型參數(shù)為。
該函數(shù)的返回值為一個(gè)函數(shù)指針,函數(shù)有2個(gè)參數(shù),第一個(gè)類型為const void*,第二個(gè)為int,返回值為int 。

posted @ 2011-04-26 15:36 呆人 閱讀(719) | 評(píng)論 (0)編輯 收藏

c語(yǔ)言中模擬動(dòng)態(tài)綁定

struct本身不能支持動(dòng)態(tài)綁定,為了實(shí)現(xiàn)統(tǒng)一接口,我們希望實(shí)現(xiàn)動(dòng)態(tài)綁定。
例如在不同的操作系統(tǒng)下,對(duì)文件的操作是不同,但是我們希望統(tǒng)一結(jié)構(gòu),有如下結(jié)構(gòu)
struct OSFile
{
    PIOMethod pMethods;
   /*
   其他信息
  */
};

struct WinOSFile
{
PIOMethod pMethods;
..........
};

struct UnixOSFile
{
PIOMethod pMethods;
..........
};

有如下方法:
void UniAPI(OSFile *file);
為了實(shí)現(xiàn)動(dòng)態(tài)綁定,做法是在調(diào)用該方法之前,將WinOSFile或者UnixOSFile的pMethods賦給OSFile的pMethods從而實(shí)現(xiàn)動(dòng)態(tài)綁定。

posted @ 2011-04-26 15:30 呆人 閱讀(537) | 評(píng)論 (0)編輯 收藏

按位使用數(shù)據(jù)以及union

例如:
typedef union tagData
{
   long x:2;
   long y:4;
   long data;
}data_item,*pdata_item;

上述是一個(gè)聯(lián)合體,聯(lián)合體的對(duì)象用的空間是類型中占用內(nèi)存最大的哪個(gè),例如上例中data_item變量占用4個(gè)字節(jié)。
long x:2;
表示x占用2bit
long y:4;
表示y占用4bit
long data;
data占用4byte
所以上述union占用4byte空間。
long s=sizeof(data_item);
s=4;

因?yàn)閤,y,data公用內(nèi)存空間。
從低位開始,即
x占用空間的低2bit,即0-1
y占用空間2~5bit
x,y都是可以是有符號(hào)的,相對(duì)最高位表示符號(hào)位。
例如,
item_data t={0};
(1) t.data = 2;
2表示成二進(jìn)制位10.
所以t.x 的值為-2;
(2) t.data = 3;
3表示成二進(jìn)制位11
所以t.x的值為-1
(3) t.data =1;
此時(shí)t.x的值為1

t.y的取值的道理同t.x;
對(duì)于t.y來(lái)說(shuō)第5位表示正負(fù)號(hào)。



posted @ 2011-03-15 17:34 呆人 閱讀(593) | 評(píng)論 (0)編輯 收藏

宏定義中字符串連接操作

宏定義中字符串連接操作

關(guān)于記號(hào)粘貼操作符(token paste operator): ##

1. 簡(jiǎn)單的說(shuō),“##”是一種分隔連接方式,它的作用是先分隔,然后進(jìn)行強(qiáng)制連接

   其中,分隔的作用類似于空格。我們知道在普通的宏定義中,預(yù)處理器一般把空格
   解釋成分段標(biāo)志
,對(duì)于每一段和前面比較,相同的就被替換。但是這樣做的結(jié)果是,
   被替換段之間存在一些空格。如果我們不希望出現(xiàn)這些空格,就可以通過(guò)添加一些
   ##來(lái)替代空格

   另外一些分隔標(biāo)志是,包括操作符,比如 +, -, *, /, [,], …,所以盡管下面的
   宏定義沒有空格,但是依然表達(dá)有意義的定義: define add(a, b)  a+b

   而其強(qiáng)制連接的作用是,去掉和前面的字符串之間的空格,而把兩者連接起來(lái)。

2. 舉列 – 試比較下述幾個(gè)宏定義的區(qū)別

   #define A1(name, type)  type name_##type##_type 或
   #define A2(name, type)  type name##_##type##_type

   A1(a1, int);  /* 等價(jià)于: int name_int_type; */
   A2(a1, int);  /* 等價(jià)于: int a1_int_type;   */

   解釋:
        1) 在第一個(gè)宏定義中,”name”和第一個(gè)”_”之間,以及第2個(gè)”_”和第二個(gè)
   ”type”之間沒有被分隔,所以預(yù)處理器會(huì)把name_##type##_type解釋成3段:
   “name_”、“type”、以及“_type”,這中間只有“type”是在宏前面出現(xiàn)過(guò)
    的,所以它可以被宏替換。

        2) 而在第二個(gè)宏定義中,“name”和第一個(gè)“_”之間也被分隔了,所以
   預(yù)處理器會(huì)把name##_##type##_type解釋成4段:“name”、“_”、“type”
   以及“_type”,這其間,就有兩個(gè)可以被宏替換了。

        3) A1和A2的定義也可以如下:
           #define A1(name, type)  type name_  ##type ##_type  
                                      <##前面隨意加上一些空格>
           #define A2(name, type)  type name ##_ ##type ##_type

    結(jié)果是## 會(huì)把前面的空格去掉完成強(qiáng)連接,得到和上面結(jié)果相同的宏定義

3. 其他相關(guān) – 單獨(dú)的一個(gè) #

   至于單獨(dú)一個(gè)#,則表示 對(duì)這個(gè)變量替換后,再加雙引號(hào)引起來(lái)。比如

      #define  __stringify_1(x)   #x
那么
      __stringify_1(linux)   <==>  ”linux”

所以,對(duì)于MODULE_DEVICE_TABLE

     1) #define MODULE_DEVICE_TABLE(type,name)                        
             MODULE_GENERIC_TABLE(type##_device,name)
     2) #define MODULE_GENERIC_TABLE(gtype,name)                      
             extern const struct gtype##_id __mod_##gtype##_table     
             __attribute__ ((unused, alias(__stringify(name))))

得到  
      MODULE_DEVICE_TABLE(usb, products)  
                             /*notes: struct usb_device_id products; */
 <==> MODULE_GENERIC_TABLE(usb_device,products)
 <==> extern const struct usb_device_id __mod_usb_device_table     
             __attribute__ ((unused, alias(“products”)))   

注意到alias attribute需要一個(gè)雙引號(hào),所以在這里使用了__stringify(name)來(lái)
給name加上雙引號(hào)。另外,還注意到一個(gè)外部變量”__mod_usb_device_table”被alias
到了本驅(qū)動(dòng)專用的由用戶自定義的變量products<usb_device_id類型>。這個(gè)外部變量
是如何使用的,更多的信息請(qǐng)參看《probe()過(guò)程分析》。

4. 分析方法和驗(yàn)證方式 – 編寫一個(gè)簡(jiǎn)單的C程序

   用宏定義一個(gè)變量,同時(shí)用直接方式定義一個(gè)相同的變量,編譯報(bào)告重復(fù)定義;
   用宏定義一個(gè)變量,直接使用該宏定義的變量名稱,編譯通過(guò)且運(yùn)行結(jié)果正確;

posted @ 2011-03-15 13:49 呆人 閱讀(4578) | 評(píng)論 (0)編輯 收藏

虛擬指針的問(wèn)題——memset相關(guān)


class Node
{
  
public:
Node(
void){}
~Node(void){}
virtual bool IsLeafNode()=0;

}
;
class InternalNode:public Node
{
public:
InternalNode()
{}
virtual ~InternalNode(void){}
virtual bool IsLeafNode(){return false;}
}
;

class LeafNode:public Node
{
public:
LeafNode()
{}
virtual ~LeafNode(){}
virtual bool IsLeafNode(){return true;}
}
;


定義以上的繼承結(jié)構(gòu):LeafNode和InternalNode繼承自Node
有一個(gè)虛方法IsLeaf來(lái)判斷是否為葉子節(jié)點(diǎn)。
下面有這樣的測(cè)試代碼:
test()
{
   Node *node = new InternalNode();
   memset(node,0,sizeof(InternalNode));
   node->IsLeafNode();
}
上述代碼編譯正常,而運(yùn)行時(shí)出錯(cuò)!
出現(xiàn)上述問(wèn)題的原因是:
對(duì)于有虛函數(shù)的類,每一個(gè)類有一個(gè)虛函數(shù)表,而每一個(gè)對(duì)象中會(huì)有一個(gè)指針指向這個(gè)虛函數(shù)表。
當(dāng)   Node *node = new InternalNode();時(shí)編譯器會(huì)把一個(gè)指針知道InternalNode的虛函數(shù)表
但是memset(node,0,sizeof(InternalNode));卻把這個(gè)指針設(shè)成了。
所以在調(diào)用的時(shí)候出現(xiàn)了運(yùn)行時(shí)錯(cuò)誤!

posted @ 2011-03-14 15:46 呆人 閱讀(471) | 評(píng)論 (0)編輯 收藏

僅列出標(biāo)題
共6頁(yè): 1 2 3 4 5 6 
<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美国产高清| 久久一区二区三区av| 欧美日韩国产成人精品| 日韩一二三区视频| 亚洲精品视频在线播放| 欧美肥婆在线| 亚洲视频在线观看一区| 亚洲视频在线观看一区| 国产精品亚洲综合一区在线观看| 香蕉av777xxx色综合一区| 亚洲一区二区精品| 国产午夜精品美女视频明星a级 | 欧美日韩在线视频观看| 亚洲综合国产精品| 午夜久久久久久| 亚洲第一福利视频| 日韩视频在线观看国产| 国产精品一区在线观看| 男人的天堂成人在线| 欧美精品粉嫩高潮一区二区| 亚洲欧美日韩国产成人| 欧美在线视频观看| 亚洲精品乱码久久久久久| 亚洲一区日韩| 亚洲精品国产精品久久清纯直播 | 亚洲视频一区二区免费在线观看| 国产精品―色哟哟| 亚洲成人自拍视频| 国产精品久久久久久影院8一贰佰| 久久精品国产99国产精品| 欧美成人免费一级人片100| 亚洲一区欧美| 美女久久网站| 新67194成人永久网站| 免费高清在线一区| 午夜欧美精品| 欧美黑人多人双交| 久久婷婷av| 国产精品久久毛片a| 免费成人av| 国产三区二区一区久久| 亚洲激情综合| 精品99一区二区| 亚洲欧美国产另类| 9i看片成人免费高清| 久久久久成人精品免费播放动漫| 亚洲影视在线| 欧美成人一区二区三区片免费| 久久国产精品72免费观看| 欧美日韩a区| 欧美激情女人20p| 国内成+人亚洲| 亚洲欧美综合精品久久成人| 亚洲宅男天堂在线观看无病毒| 美日韩精品免费观看视频| 久久精品国产一区二区三区免费看| 欧美色大人视频| 日韩视频在线观看免费| 亚洲精品视频在线观看免费| 久久视频在线视频| 久久久久久有精品国产| 国产午夜亚洲精品理论片色戒| 亚洲神马久久| 亚洲永久字幕| 国产精品国产成人国产三级| 99综合在线| 亚洲午夜一区| 国产精品超碰97尤物18| 日韩视频一区二区在线观看| 99re亚洲国产精品| 欧美激情精品久久久久久黑人| 亚洲电影在线观看| 亚洲精品欧美| 欧美精品一区二区高清在线观看| 亚洲高清在线播放| 亚洲精品日本| 欧美日韩成人一区二区三区| 99亚洲伊人久久精品影院红桃| 一区二区三区四区精品| 国产精品v片在线观看不卡| 亚洲特级片在线| 欧美一级大片在线观看| 国产综合视频| 美女999久久久精品视频| 亚洲激情电影中文字幕| 亚洲一级二级在线| 国产精品日韩精品| 性欧美超级视频| 能在线观看的日韩av| 亚洲精品1区2区| 欧美午夜无遮挡| 欧美一区二区三区播放老司机| 免费观看欧美在线视频的网站| 亚洲精品人人| 国产精品视频免费一区| 久久久综合网站| 日韩视频精品在线| 欧美专区亚洲专区| 亚洲日本中文字幕| 国产精品嫩草久久久久| 久久青青草原一区二区| 日韩亚洲在线| 久热re这里精品视频在线6| 日韩一区二区精品| 国产视频一区二区三区在线观看| 免费日韩av| 亚洲欧美日韩综合aⅴ视频| 欧美成人综合一区| 欧美一区二区女人| 99精品视频免费观看视频| 国产片一区二区| 欧美激情综合| 久久精品一区中文字幕| 日韩视频中文字幕| 男人插女人欧美| 欧美专区18| 亚洲图片在区色| 亚洲国产导航| 国产午夜精品理论片a级探花| 欧美猛交免费看| 另类综合日韩欧美亚洲| 午夜日韩激情| 中日韩视频在线观看| 亚洲国产二区| 老巨人导航500精品| 亚洲欧美日韩综合国产aⅴ| 亚洲精品视频在线看| 极品av少妇一区二区| 国产欧美精品一区二区色综合| 欧美高清在线一区| 久久人体大胆视频| 欧美影院午夜播放| 亚洲欧美三级伦理| 亚洲一区影音先锋| 亚洲午夜精品久久久久久app| 亚洲高清在线| 欧美黄网免费在线观看| 久久综合久久综合这里只有精品| 午夜亚洲一区| 欧美一区二区三区四区在线观看 | 亚洲欧美国产高清| 99国产精品视频免费观看| 亚洲激情一区| 亚洲精品视频啊美女在线直播| 亚洲国产精品99久久久久久久久| 国产一区二区日韩精品欧美精品| 国产精品一区二区你懂的| 欧美日韩精品二区| 欧美日韩中文字幕| 国产精品高清网站| 国产乱码精品一区二区三区忘忧草 | 亚洲欧美日韩国产综合在线| 亚洲精品久久| 亚洲色无码播放| 午夜精品剧场| 久久久精品午夜少妇| 久久久久国内| 欧美福利网址| 国产精品激情av在线播放| 国产精品成人v| 国产欧美视频一区二区| 国产日韩欧美一区在线| 一色屋精品视频在线观看网站| 亚洲承认在线| 亚洲精品中文字幕有码专区| 亚洲视频一区二区免费在线观看| 亚洲伊人色欲综合网| 久久久亚洲国产天美传媒修理工| 看欧美日韩国产| 亚洲欧洲在线一区| 亚洲一区二区视频在线观看| 欧美在线免费观看| 欧美高清视频在线| 国产精品乱码一区二区三区| 极品日韩久久| 一本色道久久综合亚洲二区三区| 午夜精品久久久久久久男人的天堂| 久久久免费观看视频| 亚洲精品久久久久久久久久久久| 亚洲一区亚洲| 欧美成人一区二免费视频软件| 国产精品视频区| 最新亚洲电影| 欧美在线首页| 亚洲国产精品成人综合色在线婷婷| 一区二区三区 在线观看视频| 欧美在线视频播放| 欧美精品情趣视频| 国产色综合天天综合网| a91a精品视频在线观看| 久久裸体艺术| 亚洲性视频网站| 免费日韩视频| 黄色国产精品一区二区三区| 亚洲午夜电影在线观看| 欧美粗暴jizz性欧美20| 亚洲女女女同性video| 欧美精品观看| 在线免费不卡视频| 久久精品视频亚洲|