【发布时间】:2012-10-26 06:00:43
【问题描述】:
char* foo = "fpp"; //compile in vs 2010 with no problem
虽然字符串文字是 const char* 类型。
并且 const 类型不能分配给非 const 类型。
所以我预计上面的代码会失败还是我遗漏了什么?
编辑:对不起,我完全忘记了编译器也会抛出警告。
我一直在查看错误列表。
我忘记检查了。
Edit2:我将我的项目警告级别设置为 EnableAllWarnings (/Wall),但没有任何警告。
所以我的问题仍然有效。
【问题讨论】:
-
只是为了确定(我看到 C++ 标签)C 或 C++ 程序?
-
我相信它只会抛出警告,如果你指定 char*=const char*...
-
你能不能试着写一个最小的代码,编译成 .o 并获取 .o 文件的 objdump ;只是看看这个 fpp 是驻留在 RO 内存中还是在 RAM 中。
-
gcc 只是给出警告而不是错误:liveworkspace.org/code/b7aea430807569a60acfaa1e6276b03e - 你在 VS2010 中检查过警告吗?
-
我只能猜测 - 但我认为这是出于与 C-API 的兼容性原因。这实际上是绝对必要的,因为写入 foo[1](例如 foo[1]='l';)因访问冲突而失败。而VS2010甚至没有给出警告。