nyekitka Asked:2022-07-19 20:28:20 +0000 UTC2022-07-19 20:28:20 +0000 UTC 2022-07-19 20:28:20 +0000 UTC 将标记(##)插入字符串 772 出现了以下问题:如何使用#define 插入任何名称、标题等。在线,即 #include <iostream> #define GREETING(Name) std::cout << "Hi, Name##!"; int main() { GREETING(Nick); return 0; } 我希望程序在编译后输出“Hi,Nick!”,但它会打印“Hi,Name##!”。如何用define正常显示一行? c++ макросы 3 个回答 Voted moskalenco_a 2022-07-19T20:40:59Z2022-07-19T20:40:59Z #include <iostream> #define GREETING(Name) std::cout << "Hi, " << #Name << "!\n"; int main() { GREETING(Nick); return 0; } Best Answer user7860670 2022-07-19T20:45:51Z2022-07-19T20:45:51Z ##用于粘合标记,但这里不需要,因为字符串文字本身是粘合的,只需使用将宏参数转换为文字就足够了# #include <iostream> #define GREETING(Name) std::cout << "Hi, " #Name "!"; int main() { GREETING(Nick); return 0; } DmitryK 2022-07-19T20:46:52Z2022-07-19T20:46:52Z 宏是另一个机会让自己在脚下开枪! 在函数的帮助下更容易、更正确。编译器在优化时很可能会内联它: #include <iostream> void Greeting(const char* Name) { std::cout << "Hi, " << Name << "!";} int main() { Greeting("Nick"); return 0; }
##
用于粘合标记,但这里不需要,因为字符串文字本身是粘合的,只需使用将宏参数转换为文字就足够了#
宏是另一个机会让自己在脚下开枪!
在函数的帮助下更容易、更正确。编译器在优化时很可能会内联它: