注意在现在的gcc中, const可能会被用指针绕过。
linux:
// 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; }
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; }
时间: 2024-10-11 13:34:01