为#define使用变量

nat*_*tli 4 c c++ libcurl

Libcurl使用以下方法定义电子邮件收件人:

#define RECIPIENT "<bla@bla.com>"
Run Code Online (Sandbox Code Playgroud)

但是,如果我不想对收件人进行硬编码呢?我希望用户能够提供他/她自己的电子邮件地址,所以我需要找到一种方法来执行此操作:

std::string emailreceiver = "bla@bla.com";
#define RECIPIENT = emailreceiver
Run Code Online (Sandbox Code Playgroud)

收件人在此行中使用:

rcpt_list = curl_slist_append(rcpt_list, RECIPIENT);
Run Code Online (Sandbox Code Playgroud)

我假设我不能简单地改变它

std::string emailreceiver = "bla@bla.com";
rcpt_list = curl_slist_append(rcpt_list, emailreceiver);
Run Code Online (Sandbox Code Playgroud)

有人有什么建议吗?

Gre*_*ill 9

Curl需要一个C string(const char *),而不是一个C++字符串(std::string).所以尝试:

std::string emailreceiver = "bla@bla.com";
rcpt_list = curl_slist_append(rcpt_list, emailreceiver.c_str());
Run Code Online (Sandbox Code Playgroud)

根本没有必要使用#define,这只是一个例子.

  • @natli:``define`是一个在编译期间扩展的宏.如果您尝试执行类似`#define RECEIPT email_receiver`的操作,那么只要您使用`RECEIPT`,它就会扩展到文本`email_receiver`.这可能会奏效,但前提是`email_receiver`的类型恰好可以在那里工作. (3认同)