c言語、constは迂回されます

1024 ワード

現在のgccではconstがポインタで迂回される可能性があることに注意してください.
 
linux:
// demo.cpp :              。
//

#include "stdlib.h"
#include <stdio.h>

int main(int argc, char* argv[])
{ 
	const int ii = 1234;
    printf("ii = %d
", ii); // error C2440: “ ”: “const int *” “int *” int* p = &ii; (*p) = 444; printf("ii = %d
", ii); return 0; }

  
vs 2010は迂回されません:
// demo.cpp :              。
//

#include "stdafx.h"
#include "stdlib.h"
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{ 
  const int ii = 1234;
    printf("ii = %d
", ii); // error C2440: “ ”: “const int *” “int *” int* p = &ii; (*p) = 444; printf("ii = %d
", ii);   return 0; }