我在一些中型项目上使用过C++,但我从来没有在C中做过任何严肃的编程.
阅读完本文后,我开始想知道如何在没有类和异常的情况下使用C++ 11.我曾经听过干净的C这个词.Clean C应该是一个C++代码,它不使用ANSI C没有的C++特性,比如类或元编程.
有充足的资源如何有效地使用C语言以及如何在C++中完成它们.但是很难找到任何有关如何充分利用这两个方面的资源.
我的问题分为两部分:
-
#include <cstring>
namespace addressbook {
namespace contact {
struct contact {
char* name;
char* email;
};
void initialize(addressbook::contact::contact* contact)
{
contact->name = nullptr;
contact->email = nullptr;
}
void deinitialize(addressbook::contact::contact* contact)
{
delete[] contact->name;
delete[] contact->email;
}
void set_name(addressbook::contact::contact* contact, char* name)
{
delete[] contact->name;
contact->name = new char [strlen(name) + 1];
std::strcpy(contact->name, name);
}
void set_email(addressbook::contact::contact* contact, char* email)
{
delete[] contact->email;
contact->email …Run Code Online (Sandbox Code Playgroud) 我有一个记录,并希望它的一些访问器功能.
package Some_Package is
type A is tagged record
First_Field : Integer;
Second_Field : Character;
end record;
type B is private;
function Some_A (Some_B : B) return A;
private
type B is tagged record
Some_A : A;
end record;
end Some_Package;
Run Code Online (Sandbox Code Playgroud)
这就是GNAT给我的东西:
some_package.ads:10:13: operation can be dispatching in only one type
Run Code Online (Sandbox Code Playgroud)
对于Ada新手来说,这个错误有点神秘,我会理解我做错了什么,以及如何正确地做到这一点.