本季度最爆笑笑话
2005年5月13日
今天我在写一个 c 程序,里面有如下一段话:
g_errorMessage =
"Error opening the temporary batch file for writing in functionn"
"CreateTempCDBatch.";
这个写法是正确的。其实我原来是写错掉的。我原来写的是这样的:
g_errorMessage =
"Error opening the temporary batch file for writing in functionn"
+ "CreateTempCDBatch.";
你想想看,会发生什么编译错误?
它说:
不能加两个指针。VS .NET 2003 的 C++ 编译器:
cds.c(489) : error C2110: “+” : 不能加两个指针
知道为什么我会这样写吗?
因为在 C# 里面就是这样写的!
看来我掉入 .NET Hell 了?
哈哈哈。
真是有趣啊。范添寿曾教我C/C++的编译。他说char *c1 = "fanti";是将一个c1指针指向全局区数据"fanti";而char c2[] = "fanti",相当于char c1[6] = "fanti",是做一个定长char数组{’f’, ‘a’, ‘n’, ‘t’, ‘i’, ‘\’}放在栈区中。然后c1本身是可以重指向的,c2不可(相当于char const *c2;)。是这样的吗?
一个小错误:char const *c2 应为 char *const c2。