c++ - C/C++ 应用程序的新手设计注意事项

标签 c++ c visual-c++

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

我的具体问题是:

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

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

我的两个主要关注点是效率和良好的编程标准。便携性现在不是问题。

非常感谢!!

最佳答案

IMO,2010 年不需要“C”兼容。只需使用 C++ 及其所有优势(STL、boost、所有爵士乐......)

AFAIK,将代码放在头文件中不是常规做法,通常代码放在实现文件中(.c、.cpp、...)。

将代码放在 C/CPP 文件(而不是头文件)中可以让您优化编译时依赖性(前向声明、PIMPL 等)并限制您不希望“用户”看到的非公开数据的可见性要查看的一些代码。

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

M.

关于c++ - C/C++ 应用程序的新手设计注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3268067/

相关文章:

c++ - 在包含名称和标记的结构中按升序对名称进行冒泡排序

c - 如何使用 Unix 系统调用打印文本文件的前 10 行?

c++ - 当父类和子类的数据成员同名时,如何从子类访问父类的数据成员

visual-studio - 无法从 Visual Studio 编译器上的命令行禁用编译器警告

c++ - Visual Studio 2010 和 std::function

c++ - 如何让 Sublime Text 3 编译当前目录中的特定文件? C++

c++ - 将类序列化为一个定义的对象

c - 'unary *' 的类型参数无效(有 'int' )

c++ - 在 C 中写入 C++ 指针

visual-c++ - 在 MS Visual C++ 2008 中加载 WDK 的正确方法是什么?