我对编写“更大”的应用程序还很陌生。我现在已经在 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/