代码之家  ›  专栏  ›  技术社区  ›  ngn

没有typedef的C函数类型

c
  •  3
  • ngn  · 技术社区  · 1 年前

    假设我们有许多具有相同签名和返回类型的C函数:

    R f(X x,Y y){...}
    R g(X x,Y y){...}
    R h(X x,Y y){...}
    

    哪里 X Y 参数的类型和 R 是结果的类型。

    我们可以声明这些函数,例如在头文件中或作为前向声明,如下所示:

    R f(X,Y);R g(X,Y);R h(X,Y);
    

    或者更简洁地说:

    R f(X,Y),g(X,Y),h(X,Y);
    

    或者,避免大多数重复:

    typedef R F(X,Y);
    F f,g,h;
    

    这能在一句话中完成吗 typedef ?

    3 回复  |  直到 1 年前
        1
  •  1
  •   Vlad from Moscow    1 年前

    我还没有检查,但也许在C23中可以写

    typeof( R( X, Y ) ) f, g, h;
    
        2
  •  -2
  •   Wildptr    1 年前

    head.h

    #pragma once
    
    int f(int, int), g(int, int), h(int, int);
    

    head.c

    #include "head.h"
    
    int f(int x, int y) { return 0; }
    int g(int x, int y) { return 0; }
    int h(int x, int y) { return 0; }
    

    main.c

    #include <iostream>
    #include "head.h"
    
    int main()
    {
        f(1, 2);
        return 0;
    }