Date: Thu, 02 Dec 2004 10:51:29 +0100 From: Andrea Venturoli <ml.diespammer@netfence.it> To: Rob <spamrefuse@yahoo.com> Cc: FreeBSD <freebsd-questions@freebsd.org> Subject: Re: gcc violates const-ness of variable? Message-ID: <41AEE5A1.2030405@netfence.it> In-Reply-To: <41AEC075.50207@yahoo.com> References: <41AEC075.50207@yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
This is a cryptographically signed message in MIME format. --------------ms000002080506010301040502 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Rob wrote: > Hi, > > This should probably be discussed in the GNU gcc mailinglist. > But I'm more familiar here, and I first want to share it here > with other FreeBSD users. > > I'm surprised about this piece of code: > > #include<stdio.h> > int main() > { > const int n = 0; > scanf("%d", &n); > printf("%d\n", n); > return 0; > } > > With gcc compiler, the constant variable 'n' will be overwritten > by the scanf statement. With g++ it (silently) is not. > So, I get following: > > $ gcc -W -Wall code.c > code.c: In function `main': > code.c:5: warning: writing into constant object (arg 2) > $ ./a.out > 9 > 9 > $ g++ -W -Wall code.c > code.c: In function `int main()': > code.c:5: warning: writing into constant object (arg 2) > $ ./a.out > 9 > 0 > > Is this a bug in gcc, or a feature? Well, I do not know the precise answer, I'd have to look in the standards and have no time right now, so I'll just give you some pointers... gcc -W -Wall code.c -> C compiler/you are compiling C code g++ -W -Wall code.c -> C++ compiler/you are compiling C++ code The source seems a mix of *standard* C and C++: stdio.h does not exist in C++, it might only be there for legacy code, but it works most of the times; IIRC "const" does not exist in *standardized* C... gcc should ignore that (I guess), unless you specify -traditional. "const" exists in C9X, which is not yet an official standard. I think gcc will support that, possibly with some command line switch or #define; I'm sure on Debian GNU/Linux some of the library features are turned on the latter way. bye av. --------------ms000002080506010301040502 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIHdDCC A7YwggMfoAMCAQICAQQwDQYJKoZIhvcNAQEEBQAwgZExCzAJBgNVBAYTAklUMRAwDgYDVQQI EwdCb2xvZ25hMRAwDgYDVQQHEwdCb2xvZ25hMREwDwYDVQQKEwhOZXRGZW5jZTEkMCIGA1UE AxMbTmV0RmVuY2UgQ2VydGlmaWNhdGUgTWFzdGVyMSUwIwYJKoZIhvcNAQkBFhZwb3N0bWFz dGVyQG5ldGZlbmNlLml0MB4XDTA0MDcwNjE0NTczM1oXDTA3MDcwNjE0NTczM1owgY4xCzAJ BgNVBAYTAklUMRAwDgYDVQQIEwdCb2xvZ25hMRIwEAYDVQQHEwlWaWxsYW5vdmExETAPBgNV BAoTCE5ldEZlbmNlMRkwFwYDVQQDExBBbmRyZWEgVmVudHVyb2xpMSswKQYJKoZIhvcNAQkB FhxhbmRyZWEudmVudHVyb2xpQG5ldGZlbmNlLml0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB iQKBgQDNut5pvhl9kcTaS4DwvTZA7I6G2cuNTi0zVYf3ObXn+eV5KPrUe+iIj5tsJHhZSFie Mmr/sU8+tmtL9w4F+IYqoJZMrj3pyBLwUuyG/UCA97j7iOunDXdQaezt3RjPTHDgZ1Estw42 O/tdOksw1RGz/Pcl1nYDAx3Qxb1s+CQDwwIDAQABo4IBHTCCARkwCQYDVR0TBAIwADAsBglg hkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFL+G 85rXpNrBqicRBxrsKKXAbTqxMIG+BgNVHSMEgbYwgbOAFGuQcrsEAmOxnk0uGCXT6UCTGFCD oYGXpIGUMIGRMQswCQYDVQQGEwJJVDEQMA4GA1UECBMHQm9sb2duYTEQMA4GA1UEBxMHQm9s b2duYTERMA8GA1UEChMITmV0RmVuY2UxJDAiBgNVBAMTG05ldEZlbmNlIENlcnRpZmljYXRl IE1hc3RlcjElMCMGCSqGSIb3DQEJARYWcG9zdG1hc3RlckBuZXRmZW5jZS5pdIIBADANBgkq hkiG9w0BAQQFAAOBgQCmYkfL9jqgRsIobKrZstcYZZXA0hMVKfMwUYddCKWJYjpoynV7k5pC CKo8ZLdfj9mhCnOkGLbhVpQL7ySMzAH5IbD2qgowAf06zV3rsmzmspw5iyL6iZQsJpoT+owg FtSpw2UgUuhWmq004PqgasdzlaJg3LRS1ACHmyPZKRUYaTCCA7YwggMfoAMCAQICAQQwDQYJ KoZIhvcNAQEEBQAwgZExCzAJBgNVBAYTAklUMRAwDgYDVQQIEwdCb2xvZ25hMRAwDgYDVQQH EwdCb2xvZ25hMREwDwYDVQQKEwhOZXRGZW5jZTEkMCIGA1UEAxMbTmV0RmVuY2UgQ2VydGlm aWNhdGUgTWFzdGVyMSUwIwYJKoZIhvcNAQkBFhZwb3N0bWFzdGVyQG5ldGZlbmNlLml0MB4X DTA0MDcwNjE0NTczM1oXDTA3MDcwNjE0NTczM1owgY4xCzAJBgNVBAYTAklUMRAwDgYDVQQI EwdCb2xvZ25hMRIwEAYDVQQHEwlWaWxsYW5vdmExETAPBgNVBAoTCE5ldEZlbmNlMRkwFwYD VQQDExBBbmRyZWEgVmVudHVyb2xpMSswKQYJKoZIhvcNAQkBFhxhbmRyZWEudmVudHVyb2xp QG5ldGZlbmNlLml0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNut5pvhl9kcTaS4Dw vTZA7I6G2cuNTi0zVYf3ObXn+eV5KPrUe+iIj5tsJHhZSFieMmr/sU8+tmtL9w4F+IYqoJZM rj3pyBLwUuyG/UCA97j7iOunDXdQaezt3RjPTHDgZ1Estw42O/tdOksw1RGz/Pcl1nYDAx3Q xb1s+CQDwwIDAQABo4IBHTCCARkwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNT TCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFL+G85rXpNrBqicRBxrsKKXAbTqx MIG+BgNVHSMEgbYwgbOAFGuQcrsEAmOxnk0uGCXT6UCTGFCDoYGXpIGUMIGRMQswCQYDVQQG EwJJVDEQMA4GA1UECBMHQm9sb2duYTEQMA4GA1UEBxMHQm9sb2duYTERMA8GA1UEChMITmV0 RmVuY2UxJDAiBgNVBAMTG05ldEZlbmNlIENlcnRpZmljYXRlIE1hc3RlcjElMCMGCSqGSIb3 DQEJARYWcG9zdG1hc3RlckBuZXRmZW5jZS5pdIIBADANBgkqhkiG9w0BAQQFAAOBgQCmYkfL 9jqgRsIobKrZstcYZZXA0hMVKfMwUYddCKWJYjpoynV7k5pCCKo8ZLdfj9mhCnOkGLbhVpQL 7ySMzAH5IbD2qgowAf06zV3rsmzmspw5iyL6iZQsJpoT+owgFtSpw2UgUuhWmq004Pqgasdz laJg3LRS1ACHmyPZKRUYaTGCA0swggNHAgEBMIGXMIGRMQswCQYDVQQGEwJJVDEQMA4GA1UE CBMHQm9sb2duYTEQMA4GA1UEBxMHQm9sb2duYTERMA8GA1UEChMITmV0RmVuY2UxJDAiBgNV BAMTG05ldEZlbmNlIENlcnRpZmljYXRlIE1hc3RlcjElMCMGCSqGSIb3DQEJARYWcG9zdG1h c3RlckBuZXRmZW5jZS5pdAIBBDAJBgUrDgMCGgUAoIICCTAYBgkqhkiG9w0BCQMxCwYJKoZI hvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wNDEyMDIwOTUxMjlaMCMGCSqGSIb3DQEJBDEWBBQ6 1sMjKAU8INIvR9GufcQHhtPzpTBSBgkqhkiG9w0BCQ8xRTBDMAoGCCqGSIb3DQMHMA4GCCqG SIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDCBqAYJ KwYBBAGCNxAEMYGaMIGXMIGRMQswCQYDVQQGEwJJVDEQMA4GA1UECBMHQm9sb2duYTEQMA4G A1UEBxMHQm9sb2duYTERMA8GA1UEChMITmV0RmVuY2UxJDAiBgNVBAMTG05ldEZlbmNlIENl cnRpZmljYXRlIE1hc3RlcjElMCMGCSqGSIb3DQEJARYWcG9zdG1hc3RlckBuZXRmZW5jZS5p dAIBBDCBqgYLKoZIhvcNAQkQAgsxgZqggZcwgZExCzAJBgNVBAYTAklUMRAwDgYDVQQIEwdC b2xvZ25hMRAwDgYDVQQHEwdCb2xvZ25hMREwDwYDVQQKEwhOZXRGZW5jZTEkMCIGA1UEAxMb TmV0RmVuY2UgQ2VydGlmaWNhdGUgTWFzdGVyMSUwIwYJKoZIhvcNAQkBFhZwb3N0bWFzdGVy QG5ldGZlbmNlLml0AgEEMA0GCSqGSIb3DQEBAQUABIGAomEaPFpgTbaoTODjGgaAwVG26ZU2 hMmmQDqNn7BULfn92O1+OaR43kTXoVgAVaYi1l0G0NqO/q/xMRoqfuEljwOMNW4Vz2QBcUpw R6aR0CezLyXJAYlg6E3p3x7p5QC6h8GhHxgm2p3CwC2fIN5tbTdd7nYauyC90uGHID4a0y0A AAAAAAA= --------------ms000002080506010301040502--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?41AEE5A1.2030405>