Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <vidd2a$18k9j$1@dont-email.me>
Deutsch   English   Français   Italiano  
<vidd2a$18k9j$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Bart <bc@freeuk.com>
Newsgroups: comp.lang.c
Subject: Re: question about linker
Date: Fri, 29 Nov 2024 21:52:11 +0000
Organization: A noiseless patient Spider
Lines: 100
Message-ID: <vidd2a$18k9j$1@dont-email.me>
References: <vi54e9$3ie0o$1@dont-email.me> <vi6sb1$148h7$1@paganini.bofh.team>
 <vi6uaj$3ve13$2@dont-email.me> <87plmfu2ub.fsf@nosuchdomain.example.com>
 <vi9jk4$gse4$1@dont-email.me> <vi9kng$gn4c$1@dont-email.me>
 <87frnbt9jn.fsf@nosuchdomain.example.com> <viaqh0$nm7q$1@dont-email.me>
 <877c8nt255.fsf@nosuchdomain.example.com> <viasv4$nm7q$2@dont-email.me>
 <vibr1l$vvjf$1@dont-email.me> <vic73f$1205f$1@dont-email.me>
 <20241129142810.00007920@yahoo.com> <vicfra$13nl4$1@dont-email.me>
 <20241129161517.000010b8@yahoo.com> <vicque$15ium$2@dont-email.me>
 <vid110$16hte$1@dont-email.me> <87mshhsrr0.fsf@nosuchdomain.example.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 29 Nov 2024 22:52:10 +0100 (CET)
Injection-Info: dont-email.me; posting-host="4eb9340d280f8b52517112dd0afd3685";
	logging-data="1331507"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX18iTs2F0xisJLrzTC8jDFww"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:2gx2Ggq0RtmZyu+meuKS3yxi9SI=
In-Reply-To: <87mshhsrr0.fsf@nosuchdomain.example.com>
Content-Language: en-GB
Bytes: 5374

On 29/11/2024 20:35, Keith Thompson wrote:
> Bart <bc@freeuk.com> writes:
> [...]
>> C's syntax allows a 14-parameter function F to be declared in the same
>> statement as a simple int 'i'.
> 
> Yes (except that it's a declaration, not a statement) :
> 
>      int i = 42, F(int, int, int, int, int, int, int,
>                    int, int, int, int, int, int, int);
> 
> Are you under the impression that anyone here was not already aware of
> that?  Would you prefer it if the number of parameters were arbitrarily
> restricted to 13?
> 
> Do you think that anyone would actually write code like the above?
> 
> C generally doesn't impose arbitrary restrictions.  Because of that,
> it's possible to write absurd code like the declaration above.  99% of
> programmers simply don't do that, so it's not a problem in practice.
> 
>> I'd say that F and i are different types! (Actually I wouldn't even
>> consider F to be type, but a function.)
> 
> Neither F nor i is a type.  i is an object (of type int), and F is a
> function (of type int(int, int, int, int, int, int, int, int, int, int,
> int, int, int, int)).
> 
>> That F(1, 2, 3.0, "5", "six", seven, ...) might yield the same type as
>> 'i' is irrelevant here.
> 
> It's relevant to the syntax.  i and F can be declared in the same
> declaration only because the type of i and the return type of F happen
> to be the same.  If F returned void, i and F would have to be declared
> separately.
> 
> Which, of course, is a good idea anyway.
> 
> You're posting repeatedly trying to convince everyone that C allows
> ridiculous code.  We already know that.  You are wasting everyone's time
> telling us something that we already know.  Most of us just don't obsess
> about it as much as you do.  Most of us recognize that, however
> convoluted C's declaration syntax might be, it cannot be fixed in a
> language calling itself "C".
> 
> Most of us here are more interested in talking about C as it's
> specified, and actually trying to understand it, than in complaining
> about it.
> 
>> Usually, given these declarations:
>>
>>    int A[100]
>>    int *B;
>>    int (*C)();
>>
>> people would consider the types of A, B and C to be array, pointer and
>> function pointer respectively. Otherwise, which of the 4 or 5 possible
>> types would you say that D has here:
>>
>>    int D[3][4][5];
>>
>> It depends on how it is used in an expression, which can be any of &D,
>> D, D[i], D[i][j], D[i][j][k], none of which include 'Array' type!
> 
> No, the object D unambiguously has type int[3][4][5]

(So it would have a different type from E declared on in the same 
declaration:

    int D[3][4][5], E;

? In that case tell that to David Brown!)


You seem have missed the point of my post, which was a reply to David's 
remark that 'they can't have totally different types' which was in 
response to my saying that each variable in the same declaration can 'be 
[of] a totally different type'.

DB is assuming the type of the variable after it's been used in an 
expression that is fully evaluated to yield its base type. So my A[100] 
is used as A[i], and D[3][4][5]  is used as D[i][j][k].

But of course they may be evaluated only partially, yielding a range of 
types.



> Would you write "const int F();"?  Or would you omit the "const"?  How
> does the fact that "const" is allowed inconvenience you?

It's another point of confusion. In my language I don't treat function 
declarations like variable declarations. A function is not a variable. 
There is no data storage associated with it.

In C it is unfortunate, as it makes it hard to trivially distinguish a 
function declaration (or the start of a function definition) from a 
variable declaration.