extern "C" {
typedef struct Pair_s {
char *first;
char *second;
} Pair;
typedef struct PairOfPairs_s {
Pair *first;
Pair *second;
} PairOfPairs;
}
Pair pairs[] = {
{"foo", "bar"}, //this is fine
{"bar", "baz"}
};
PairOfPairs pops[] = {
{{"foo", "bar"}, {"bar", "baz"}}, //How can i create an equivalent of this NEATLY
{&pairs[0], &pairs[1]} //this is not considered neat (imagine trying to read a list of 30 of these)
};
我該如何實現上述樣式聲明的語義?我如何在C++中聲明一個帶有填充信息的指針?
在C++中,你可以使用'std :: string'而不是'char *'。然而,這些「雙」之間的關係是什麼? –
@JesseGood它的C++代碼與c代碼接口,所以它使用'char *'s。這一對是一個關鍵/值,一對對是一個小集。因此,除了所聲明的內容之外,它們之間不存在任何關係,這就是爲什麼'&pairs [0],&pairs [1]'符號不可能被讀取的原因。 – chacham15
您可以使用'std :: string'並仍然與C代碼交互。只需在字符串上調用'c_str()'來獲得一個可以傳遞給C代碼的字符指針。 – jalf