如果您MINTINT
爲typedef int MYINT
然後MYINT()
不是功能,而是int()
這是一個默認的初始化,equivallent到int y = 0
或int y = int(0)
。
出於同樣的原因,您的第二行,即cout << MYINT()
對於我來說編譯正確,g++ -Wall -ansi -pedantic
。
但是,g++
會抱怨的sizeof
有以下錯誤error: invalid application of "sizeof" to a function type
,因爲它解釋MYINT()
爲「以INT的默認構造函數的調用」(編輯:這是不正確的)「函數類型返回MYINT這是不允許「(編輯:這是正確的答案,請參閱邁克的)。但是這與typedef
無關。
摘要:
#include <iostream>
typedef int myint;
int main()
{
int y = myint();
int z = myint(0);
std::cout << y << z; // Will output 0 0
std::cout << std::endl << myint(0) << myint(); // Will output 0 0
std::cout << sizeof(int()); // The error is here; same with sizeof(myint())
}
編輯(再)
至於說在註釋中是cout
行不爲你工作,這是因爲你可能忘了include <iostream>
。
編輯 看也邁克·西摩爲歧義與sizeof
解釋答案。
你能顯示MYINT的聲明嗎? – 2010-09-03 12:31:10
什麼是'MYINT()'?我會幫助我們回答你的問題。 – 2010-09-03 12:31:45
請發佈如何定義MYINT()宏。如果沒有這個,就會有幫助 – 2010-09-03 12:31:51