我正在开发一个实现我制作的算法的加密应用程序。我有大约一年的 C 经验和 6 个月的 C++ 经验,但我有 6 年的 Visual Basic 和 Gambas 经验(我希望我是一个快速学习者)。我想让我的新应用程序尽可能高效;这就是我选择 C 而不是 C++ 的原因(我想使用一种低级语言)。
在我的程序中,我使用定义的字符串常量来处理错误消息。我知道预处理器在每次出现时都会用实际字符串替换宏名称。如果我没记错的话,这意味着它预先分配了字符串常量并为每次出现返回不同的指针。我必须释放所有这些字符串指针吗?实际上这似乎有点奇怪......它们的指针是像自动变量(这意味着它们在退出范围时被释放)还是它们永远作为常量保持不变?
我使用了一个名为 messages.h 的专用头文件,其中包含程序可能使用的每个可能的错误消息的定义,这样我就可以更轻松地更改语言等;因此我不能直接将它们写为字符串常量。我想将它们声明为常量变量,但是我要么必须使用具有实际值的 C 文件并将标头版本声明为 extern,要么在包含 messages.h 标头的每个文件中重新声明所有常量(相信我,我有 20 多个包含该项目的文件,大约 50-100 条消息,加上提示消息 - 大约 30 条长消息 - 所以它会消耗大量内存)。
你有什么建议?应该——更重要的是我可以——释放指向常量的指针吗?