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

Sean Silva via cfe-dev cfe-dev at lists.llvm.org
Wed Jan 11 01:44:25 PST 2017


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;
>

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


>
>     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/5f9dc583/attachment.html>


More information about the cfe-dev mailing list