rc_avpair_add 这个函数。
想把一个 repo 的代码从 C++转成 C (目标平台编译器对 CPP 支持不好),遇到了这个诡异的问题
库: https://github.com/radcli/radcli/
原型:
VALUE_PAIR *rc_avpair_add(rc_handle const *rh, VALUE_PAIR **list, uint32_t attrid, void const *pval, int len, uint32_t vendorspec);
C++代码片段:
// C++ code example where the issue does not occur
constexpr int kVendorSoftbank = 22197;
constexpr int kSbBBMac = 1;
// ... (other relevant code)
if (rc_avpair_add(rh.get(), &send_raw, kSbBBMac, mac.c_str(), mac.size(), kVendorSoftbank) == nullptr) {
// Error handling
}
C 代码片段:
// C code example where the issue occurs
const int kVendorSoftbank = 22197;
const int kSbBBMac = 1;
// ... (other relevant code)
if (rc_avpair_add(rh, &send_raw, kSbBBMac, mac, strlen(mac), kVendorSoftbank) == NULL) {
// Error handling
}
C 代码里 vendorspec 只有指定为 0(VENDOR_NONE)时才能正确执行,其他无论设置成什么值都返回失败 NULL ,C++代码就能正确执行。
C 代码: https://github.com/missing233/sofutobanku/blob/master/c/radius.c
C++代码: https://github.com/missing233/sofutobanku/blob/master/cpp/radius.cc
求 C 语言大手子解答(
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.