注意在现在的gcc中, const可能会被用指针绕过。
linux:
#include "stdlib.h"
#include <stdio.h> int t1()
{
const int ii = 1234;
printf("ii = %d\n", ii); // error C2440: “初始化”: 无法从“const int *”转换为“int *” int* p = ⅈ
(*p) = 444;
printf("ii = %d\n", ii);
return 0;
} /*
root@oucaijun:/work/dcc# gcc 1.c ;./a.out
ii = 1234
ii = 444 */
vs2010不会被绕过:
// demo.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include "stdlib.h"
#include <stdio.h> int _tmain(int argc, _TCHAR* argv[])
{
const int ii = 1234;
printf("ii = %d\n", ii); // error C2440: “初始化”: 无法从“const int *”转换为“int *” int* p = ⅈ
(*p) = 444;
printf("ii = %d\n", ii);
return 0;
}