C++ C/C+的新手设计注意事项+;应用

C++ C/C+的新手设计注意事项+;应用,c++,c,visual-c++,C++,C,Visual C++,我对编写“更大”的应用程序相当陌生。现在我已经编写了一个命令行应用程序,它在Visual C++ 2010中有几千行代码,编译和运行良好。大多数代码是C兼容的(我想),但是,我发现使用C++ C++结构在这里和那里都是有用的。例如,有时我使用new/delete而不是malloc/free来调用构造函数,或者为了方便起见使用std::vector或std::set。我将所有代码放在大约25个.h文件中,但int main()除外,它当前位于一个.cpp文件中 我的具体问题是: 我猜想我的所有代

我对编写“更大”的应用程序相当陌生。现在我已经编写了一个命令行应用程序,它在Visual C++ 2010中有几千行代码,编译和运行良好。大多数代码是C兼容的(我想),但是,我发现使用C++ C++结构在这里和那里都是有用的。例如,有时我使用new/delete而不是malloc/free来调用构造函数,或者为了方便起见使用std::vector或std::set。我将所有代码放在大约25个.h文件中,但int main()除外,它当前位于一个.cpp文件中

我的具体问题是:

    我猜想我的所有代码都是编译成C++代码的。让代码的某些部分真正符合C语言有意义吗?那么我可以让Visual Studio将其编译为C吗?对于程序的大部分,对于某些更难的部分(转换std::vector),使其符合C标准是非常简单的(例如,用malloc和初始化函数替换new等)。还是只有当一切都是C时才有意义?有什么好处?或者,将一切转换成C++是有意义的吗?例如,使用new代替malloc,使用std::string代替char*

  • 我猜它并不打算将所有代码都放在.h文件中。我应该如何将代码放入文件中?除了少数,我没有很大的课。我的大部分代码都是过程和函数

我关心的两个主要问题是效率和体面的编程标准。可移植性现在不是一个问题


非常感谢

IMO,2010年无需遵守“C”标准。只使用C++及其所有优点(STL,Boost,所有的爵士乐…)< /P> 另外,将代码放在头文件中不是正常的做法,通常代码放在实现文件(.c,.cpp,…)中

将代码放入C/CPP文件(而不是头文件)可以优化编译时依赖关系(转发声明、PIMPL等),并限制不希望某段代码的“用户”看到的非公共数据的可见性

通过减少处理复杂结构和算法时可能/将要发生的潜在错误(例如,处理std::vector比处理数组更容易,处理std::string比处理char*更容易),使用标准库将有助于代码的稳定性、可读性和长期维护


如果你编译的文件有一个“C”扩展,它将被编译成C。如果它被称为“CPP”,它将编译为C++。p>
<>如果要使用C++的特性,我就重新做了C++的一切,它让生活更简单。C++看起来非常像C,不需要任何成本,除非你使用C++特性。p> 至于.h/.c/.cpp文件,接口放在头文件中,编译的东西放在.c/cpp文件中

因此,如果您有一个计算小部件的模块,您应该将
calculate\u小部件
函数原型放在.h文件中,并将实际执行该操作的代码放在.c文件中。要计算widgets
#的任何其他模块包括
s
widgetcalc.h
和调用
calculate\u widgets
。任何没有被外部模块调用的代码都可以在静态函数中声明,这有助于优化并防止名称空间冲突


作为一般规则,如果一行代码编译成一定数量的处理器指令,则它不属于.h文件。

听起来除了熟悉之外,您没有理由使用
malloc
free
。我建议你熟悉C++的做事方式。使用
新建
删除
,不要犹豫使用
向量
,等等。不要将所有代码放在H文件中。这在更大的应用程序中不会很好地工作。学会将声明和定义分开。你的指导很有帮助@zvonimir:我的大部分代码都是程序和函数。。。我应该为函数声明创建一个.h文件吗?