1樓:猿宅
cocos2dx中的吧。 menu_selector看成是函式名,_selector就是函式的引數,也就是說把_selector這個引數強制轉換成sel_menuhandler,而sel_menuhandler的定義為
typedef void (ccobject::*sel_menuhandler)(ccobject*); 也就是符合這樣的格式的函式指標。
類似的。如果我們定義 typedef void (ccnode::*sel_myhandler)(int); 然後寫一個
只要我們在繼承自ccnode(因為我們這裡typedef void (ccnode)用的是ccnode)的類中定義一個引數為int返回值為void的函式,比如 void myclass::myfunc(int); myclass繼承自ccnode,那麼我們就可以這樣用 my_selector(myclass::myfunc)
//a.h
typedef void (ccnode::*sel_myhandler)(int);
class myclass : public ccnode //繼承自ccnode
; //按照自己定義的格式寫函式
void callback
};//b.h
#include "a.h"
class b
;//b.cpp
void execute()
void registercallback(sel_myhandler myhander, ccnode* ptarget)
2樓:
這句話翻譯過來就是說:
首先,menu_selector()是一個函式,_selector是menu_selector()這個函式的引數;
其次,sel_menuhandler也是一個函式,&_selector是這個函式的引數;
最後,menu_selector(_selector)其實就是sel_menuhandler(&_selector)的代號,程式**中只要出現menu_selector(_selector)的地方,都會被編譯器自動替換為sel_menuhandler(&_selector)。
注意, menu_selector(_selector)是一個整體,sel_menuhandler(&_selector)也是一個整體,兩部分之間要有空格才不至於產生歧義。而且,sel_menuhandler外面的括號也是為避免發生歧義而設定的。
3樓:匿名使用者
巨集函式定義。
巨集,就是替換模式,注意替換在編譯之前。
呼叫:menu_selector(1)
在編譯之前被替換為:
sel_menuhandler(1_selector)圓括號是為了防止歧義和「粘連」的界定符號,沒有特殊意義。
地址符 是替換符的一種
c++,關於#define的問題,請問一下**中 \ 意思?
4樓:匿名使用者
\表示 #define語句拆成多行,比如
#define pcl_add_point4d \eigen_align16 \
union ; \
}; \
意思就是
#define pcl_add_point4d eigen_align16 union ; };
5樓:月下憶嬌娘
就是可以吧多行一起處理。
#define test 123
那麼test換成123
#define test 123\
234\
test 換成
123234
6樓:0無_心
確定這能編譯通過嗎?union ; \
}; \
這部分的樣子從來沒見過
好吧,給樓上跪了。。
c++ 裡面 #define問題
7樓:
提前定義,在當前名稱空間都可以用
c++#define問題
8樓:匿名使用者
#define l(r) r*r是巨集定義,直接帶入,不管你r的表示式多複雜都是直接帶入,不是先算r
所以說l(n+n)=n+n*n+n=120
9樓:使用者名稱無法獲取
l(n+n)將編譯為n+n*n+n;
巨集定義只是簡單的對照翻譯,不會進行計算。
10樓:廿哉
確定120?define只是簡單的替換
11樓:匿名使用者
巨集定義只是簡單直接帶入,對照翻譯,不會進行優先順序計算l(r) r*r
l(n) n*n
l(n+n) n+n*n+n
這樣一看就很清楚了!呵呵
c++中用#define遇到的問題
12樓:丶
一般在標頭檔案中寫#ifndef,防止重定義。
你可以在class.h中寫:
#ifndef _class_h_
#define _class_h_
//下面是類的定義
//····
#endif
然後在其他檔案中包含標頭檔案#include"class.h",這樣能保證class.h的內容只編譯一次
13樓:不見彩虹多年
首先,你的#endif在哪?應該在main函式後面。而#include"class.h"是在#ifndef _class_h_
...#endif中間、所以需要在#ifndef _class_h_前面增加#define _class_h_
C語言小問題,關於,關於C語言的小問題?
a b max a max b 語法錯誤,該為 a b max a max b 另外注意 printf 最大值為 c n c 改正為printf 最大值為 d n c 已測試關於i 和 i的區別,如果沒有賦值的話,他們結果是沒區別的,關於他們的區別,我舉例說明 1 int i 0,a a i 這裡結...
關於C 的小問題,一個關於C 的小問題
1 cout 當定義了 carrots就輸出內容,沒定義carrots就編譯不通過。區別就是執行起來還是嘣一聲告訴你沒戲啊 2.用 轉義 cout hollo,word 3.程式模組?不知道你在說啥 4.區別就是前一個函式需要一個 double 型的引數,後一個不要5 就這一句不知道什麼意思 仔細學...
關於c 的小問題,一個關於c 的小問題
windows平臺,肯定要用api的,mfc vcl wxwindow也是封裝一下api而已 其他的不可以 不用windows api你什麼windows程式也編寫不了。很奇怪你為什麼不用windows的api,微軟給你提供這些api就是讓你寫windows程式的,你不用windows api,怎麼...