[cfe-dev] [llvm-dev] Modernizing LLVM Coding Style Guide and enforcing Clang-tidy

Piotr Padlewski via cfe-dev cfe-dev at lists.llvm.org
Wed Jan 11 04:10:41 PST 2017


2017-01-11 10:44 GMT+01:00 Sean Silva <chisophugis at gmail.com>:

>
>
> On Tue, Jan 10, 2017 at 8:49 AM, Sanjoy Das via cfe-dev <
> cfe-dev at lists.llvm.org> wrote:
>
>>
>>
>> Sent from a mobile device, please excuse typos.
>>
>> On Jan 10, 2017 2:04 AM, "Piotr Padlewski" <piotr.padlewski at gmail.com>
>> wrote:
>>
>>
>>
>> 2017-01-10 0:06 GMT+01:00 David Blaikie <dblaikie at gmail.com>:
>>
>>>
>>>
>>> On Mon, Jan 9, 2017 at 2:59 PM Sanjoy Das via llvm-dev <
>>> llvm-dev at lists.llvm.org> wrote:
>>>
>>>> Hi,
>>>>
>>>> Sorry I fat fingered an earlier send in the previous email.  I was
>>>> trying to say:
>>>>
>>>> On Mon, Jan 9, 2017 at 2:52 PM, Sanjoy Das
>>>> <sanjoy at playingwithpointers.com> wrote:
>>>> >> +1 Exactly this.
>>>> >> I don't think C programmer will not understand using. The "=" makes
>>>> it much
>>>> >> simpler to read, even if it is the first time you see it, which is
>>>> not the
>>>> >> case of typedef.
>>>> >>
>>>> >> typedef MyType::NestedType (*fptr)(const MyOhterType&);
>>>> >> or
>>>> >> using fptr = MyType::NestedType (*)(const MyOhterType&);
>>>> >
>>>>
>>>> I would prefer to please keep using typedefs at least for function
>>>> pointers.  I find either of
>>>>
>>>> typedef MyType::NestedType (*fptr)(const MyOhterType&);
>>>>
>>>> or
>>>>
>>>> typedef int fptr(const int&);
>>>>
>>>> void f(fptr* ptr) {
>>>>   ...
>>>> }
>>>>
>>>> easier to read than the "using" declaration (especially the second
>>>> form, with the explicit `fptr* ptr`).
>>>>
>>>
>>> Not sure I follow. You're saying this:
>>>
>>>   typedef int func_type(const int&);
>>>
>>> is easier for you to read than this:
>>>
>>>   using func_type = int(const int&);
>>>
>>> ?
>>>
>>>
>> I never saw syntax
>>
>> typedef int funct_type(const int&);
>>
>> I tried to use it and I got compile error for code:
>> int z(const int&);
>>
>> int main() {
>>     typedef int fptr(const int&);
>>
>>     fptr f = z;
>>
>>
>> That needs to be fptr* f = z;
>>
>
> That make sense!



> Yeah. It was confusing in the original example to have "ptr" in the name
> of the typedef. Usually it is more like:
>
> typedef int callback_func(void *closure);
> int foo(callback_func *cb) {
>   // ...
> }
>
> (though this style is pretty rare in my experience, and results in the
> callback_func name being a weird type that you can't assign or do other
> stuff with).
>
> -- Sean Silva
>
>

Yep, I have never seen it in LLVM code.


>
>>     f(42);
>> }
>>
>> where typedef int (*fptr)(const int&)
>>
>> works.
>>
>>
>>
>>>
>>>> -- Sanjoy
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> llvm-dev at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>>
>>>
>>
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170111/6828a9eb/attachment.html>


More information about the cfe-dev mailing list