冲突类型总是C中的问题吗?

Zig*_*ggy 3 c namespaces

我越来越痛苦地从Java转移到C.我已经习惯了使用不同的方法来使用相同的名称,但它们采用不同的参数.在C中这会产生问题吗?

Cell makeCell(int dim, int iterations, Cell parent);

Cell makeCell(Cell parent);
Run Code Online (Sandbox Code Playgroud)

有一些小巧的变通对于这个问题,或者我应该保持咬紧牙关,并呼吁他们的一个_makeCellmakeCell2或一些其他类似的可笑吗?

Jon*_*ler 10

在C中,您没有重载函数 - 具有相同名称但参数类型不同的函数(忽略诸如<tgmath.h>C99中的esoterica ).

必须为这些函数指定不同的名称.

或者使用支持重载函数名称的其他语言.


pax*_*blo 5

你在Java或C++中理解它是没有重载的(尽管你手动创建了使用函数指针的重载,但是如果你想要面向对象,使用C++,而不是带有kludges的C: - ),所以你应该如你所怀疑的那样,称它们为不同的功能名称.

但是不要将它们称为_makeCell或makeCell2,因为那不是描述性的.怎么样:

Cell makeCellFromDimensionAndIteration(int dim, int iterations, Cell parent);
Cell makeCell(Cell parent);
Run Code Online (Sandbox Code Playgroud)

第一个可以缩短,但要确保它仍然有意义.makeCell2对于阅读代码的人来说意义不大(包括你自己未来六个月).