C结构中的函数定义?

Function definition in C struct?

我有一段 C 代码需要理解。有一个

typedef struct someStruct {
    int i; 
    char c; 
    someStruct() {
        i = 0;
        c = 'c';
    }
    someStruct(char inpChar) {
        i = 1;
        c = inpChar;
    }
} t_someStruct;

(我知道这些代码没有意义或没有任何意义。我只是对其进行了简化。) 所以有这个结构,它有两个成员(int i 和 char c)。有趣的是它基本上有两个构造函数,这对我来说是一个新概念。 它可以正常工作,但是我们可以为结构编写构造函数吗?我在 Google 上找不到任何东西,可能是我搜索不对。

您的代码不是有效的 C 代码(即有效 C11) code but it is valid C++ (i.e. C++14)代码。

在 C++ 中,struct 类似于 class,只是所有成员默认都是 public;参见例如here.

C 中没有构造函数。

此代码很可能是用 C++ 编写的。 在 C++ 中,struct 实际上类似于 class,因此您 可以 为 C++ 中的结构定义构造函数。

尝试在 gcc 中编译您的代码。你会得到一个

error: expected specifier-qualifier-list before ‘someStruct’

C 和 C++ 的主要区别在于 C++ 支持 class 而 C 不支持。在 C++ 中,struct 是一个特殊的 class,所以上面的代码可以在 C++ 中运行,但不能在 C 中运行。