From owner-freebsd-questions@FreeBSD.ORG Thu Dec 2 09:52:19 2004 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D300216A4CE for ; Thu, 2 Dec 2004 09:52:19 +0000 (GMT) Received: from parrot.aev.net (host29-15.pool8174.interbusiness.it [81.74.15.29]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7D13443D4C for ; Thu, 2 Dec 2004 09:52:17 +0000 (GMT) (envelope-from ml.diespammer@netfence.it) Received: from soth.ventu (adsl-ull-110-5.41-151.net24.it [151.41.5.110]) (authenticated bits=128) by parrot.aev.net (8.13.1/8.13.1) with ESMTP id iB29wB8n019354 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 2 Dec 2004 10:58:17 +0100 (CET) (envelope-from ml.diespammer@netfence.it) Received: from netfence.it (xanatar.ventu [10.1.2.6]) by soth.ventu (8.13.1/8.12.10) with ESMTP id iB29pSkA099968; Thu, 2 Dec 2004 10:51:28 +0100 (CET) (envelope-from ml.diespammer@netfence.it) Message-ID: <41AEE5A1.2030405@netfence.it> Date: Thu, 02 Dec 2004 10:51:29 +0100 From: Andrea Venturoli User-Agent: Mozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.6) Gecko/20040117 X-Accept-Language: it,en,fr,de MIME-Version: 1.0 To: Rob References: <41AEC075.50207@yahoo.com> In-Reply-To: <41AEC075.50207@yahoo.com> Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="------------ms000002080506010301040502" X-Scanned-By: MIMEDefang 2.45 cc: FreeBSD Subject: Re: gcc violates const-ness of variable? X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Dec 2004 09:52:19 -0000 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 > 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--