c - 如何在宏函数中增加数字并转换为字符串?
问题描述
// it return "192.168.123.num"
#define GET_SLAVE(num) "192.168.123."#num
但是,我想获得数量增加的字符串。
例如)GET_SLAVE(2) --> "192.168.123.4"
我怎样才能做到?还是在宏功能中不可能?
解决方案
您可以使用一些宏魔法来实现这一点,但它看起来并不是最好的:
#define GET_SLAVE(num) "192.168.123."ADD2_##num##_
#define ADD2_0_ "2"
#define ADD2_1_ "3"
#define ADD2_2_ "4"
#define ADD2_3_ "5"
#define ADD2_4_ "6"
#define ADD2_5_ "7"
#define ADD2_6_ "8"
#define ADD2_7_ "9"
#define ADD2_8_ "10"
#define ADD2_9_ "11"
#define ADD2_10_ "12"
#define ADD2_11_ "13"
#define ADD2_12_ "14"
#define ADD2_13_ "15"
#define ADD2_14_ "16"
#define ADD2_15_ "17"
#define ADD2_16_ "18"
#define ADD2_17_ "19"
#define ADD2_18_ "20"
#define ADD2_19_ "21"
#define ADD2_20_ "22"
#define ADD2_21_ "23"
#define ADD2_22_ "24"
#define ADD2_23_ "25"
#define ADD2_24_ "26"
#define ADD2_25_ "27"
#define ADD2_26_ "28"
#define ADD2_27_ "29"
#define ADD2_28_ "30"
#define ADD2_29_ "31"
#define ADD2_30_ "32"
#define ADD2_31_ "33"
#define ADD2_32_ "34"
#define ADD2_33_ "35"
#define ADD2_34_ "36"
#define ADD2_35_ "37"
#define ADD2_36_ "38"
#define ADD2_37_ "39"
#define ADD2_38_ "40"
#define ADD2_39_ "41"
#define ADD2_40_ "42"
#define ADD2_41_ "43"
#define ADD2_42_ "44"
#define ADD2_43_ "45"
#define ADD2_44_ "46"
#define ADD2_45_ "47"
#define ADD2_46_ "48"
#define ADD2_47_ "49"
#define ADD2_48_ "50"
#define ADD2_49_ "51"
#define ADD2_50_ "52"
#define ADD2_51_ "53"
#define ADD2_52_ "54"
#define ADD2_53_ "55"
#define ADD2_54_ "56"
#define ADD2_55_ "57"
#define ADD2_56_ "58"
#define ADD2_57_ "59"
#define ADD2_58_ "60"
#define ADD2_59_ "61"
#define ADD2_60_ "62"
#define ADD2_61_ "63"
#define ADD2_62_ "64"
#define ADD2_63_ "65"
#define ADD2_64_ "66"
#define ADD2_65_ "67"
#define ADD2_66_ "68"
#define ADD2_67_ "69"
#define ADD2_68_ "70"
#define ADD2_69_ "71"
#define ADD2_70_ "72"
#define ADD2_71_ "73"
#define ADD2_72_ "74"
#define ADD2_73_ "75"
#define ADD2_74_ "76"
#define ADD2_75_ "77"
#define ADD2_76_ "78"
#define ADD2_77_ "79"
#define ADD2_78_ "80"
#define ADD2_79_ "81"
#define ADD2_80_ "82"
#define ADD2_81_ "83"
#define ADD2_82_ "84"
#define ADD2_83_ "85"
#define ADD2_84_ "86"
#define ADD2_85_ "87"
#define ADD2_86_ "88"
#define ADD2_87_ "89"
#define ADD2_88_ "90"
#define ADD2_89_ "91"
#define ADD2_90_ "92"
#define ADD2_91_ "93"
#define ADD2_92_ "94"
#define ADD2_93_ "95"
#define ADD2_94_ "96"
#define ADD2_95_ "97"
#define ADD2_96_ "98"
#define ADD2_97_ "99"
#define ADD2_98_ "100"
#define ADD2_99_ "101"
我们创建了 100 个宏,它们适用于 0-99 之间的任何数字(如果需要,您可以制作更多),它们扩展为字符串形式的加 2 数字。在我们的GET_SLAVE
宏中,我们通过num
来选择使用哪个ADD2_X_
宏ADD2_##num##_
。现在你可以做
puts(GET_SLAVE(2));
// Output: 192.168.123.4
推荐阅读
- php - 缩略图在 dropzone 中无法正确生成服务器存储文件
- lua - 如何添加到 Lua DissectorTable?
- spring-boot - SpringBoot JMS 侦听器:无法刷新目标的 JMS 连接
- sql - 无法获取正确的数据透视表
- c# - 无法将 C# Basic bot 连接到 Bot Framework Emulator
- apache-spark - PySpark:更新给定行数的 DataFrame 的列值
- bash - 如何在bash中同时重复两个for循环?
- azure - 删除对 Azure Web App 的公共 Web 访问
- vba - 识别并粘贴最近更新的命名范围
- java - 如何在 Google Colab 中使用 Java