我在一个int main(int argc, char* argv<::>)
也可以用作的签名的网站上看到过main
。令人惊讶的是,以下程序:
int main(int argc, char* argv<::>)
{
return 0;
}
编译在GCC和clang中发出的所有警告。它还在C ++中编译。
那么,这int main(int argc, char* argv<::>)
是的有效签名main
吗?
char* argv<::>
等价于char* argv[]
。<:
而:>
这里使用的是有向图。
在语言的所有方面,六个标记79)
<: :> <% %> %: %:%:
的行为分别与六个标记相同
[ ] { } # ##
除了他们的拼写。80)
脚注:
79)这些标记有时也称为“有向图”。
80)因此[
,<:
当“字符串化”时,它们的行为会有所不同(请参见6.10.3.2),但可以自由互换。
一个例子:
%: define stringize(a) printf("Digraph \"%s\" retains its spelling in case of stringization.\n", %:a)
调用上面的宏
stringize( %:);
将打印
Digraph "%:" retains its spelling in case of stringization.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句