- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有以下功能:
void Register(Data* _pData, uint32 _Line, const char* _pFile, ...)
{
va_list Args;
va_start(Args, _pFile);
for(uint i = 0;i m_NumFloats; ++i)
{
_pData->m_Floats[i] = va_arg(Args, fp32);
}
va_end(Args);
}
由宏调用:
#define REG(_Name, ...)\
{\
if(s_##_Name##_Data.m_Enabled)
Register(&s_##_Name##_Data, __LINE__, __FILE__, ##__VA_ARGS__);\
}\
使用方法:
REG(Test, (fp32)0.42f);
数据结构看起来像:
struct Data
{
int m_NumFloats;
fp32 m_Floats[4];
}
Data 的创建宏创建静态Data g_YourName_Data
并使用最多 4 个 m_NumFloats 正确初始化它。
va_arg 调用解析为 0.0。 s_Test_Data 存在并且注册函数被适当调用。 va-list 只是不会让我将第一个参数解析为我传递给它的 float 。有什么我遗漏的具体内容吗?
最佳答案
尝试:
#define REG(_Name, ...)\
{\
if(s_##_Name_Data.m_Enabled)\
Register(&s_##_Name_Data, __LINE__, __FILE__, __VA_ARGS__);\
}
去掉 token 粘贴运算符。您的宏中也缺少“\”(可能是复制粘贴错误?)。
此外,使用 va_arg()
,而不是 va_args()
。我不确定您是想将 _Name
设为 _Name_Data
还是相反。
最后,我假设 fp32
是 float
的别名; GCC 对我说:
C:\TEMP\test.c:22: warning: `fp32' is promoted to `double' when passed through `...'
C:\TEMP\test.c:22: warning: (so you should pass `double' not `fp32' to `va_arg')
C:\TEMP\test.c:22: note: if this code is reached, the program will abort
你应该注意那个警告。如果我不这样做,程序确实会崩溃。
关于c - va-args 没有正确解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3428575/
这应该是一个简单的问题:我知道 VA = RVA + PE 的 imagebase,现在我试图在反汇编程序中找到一个字符串,恰好位于 .text 部分的 0042720E。 imagebase是400
我正在尝试创建一个系统,每次将输入添加到文本框中时,我都可以从代码中创建一个数组。 html: JavaScript: function addTeamName()
我正在编写一个带有黑盒库的接口(interface)(称之为“A”),并且需要向它传递一个 void* 分配。我想用来自其他两个库(称为“X”和“Y”)的两个单独分配来支持此分配,复制对两个分配的所有
我有以下功能: void Register(Data* _pData, uint32 _Line, const char* _pFile, ...) { va_list Args; va_
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
谁能解释我在哪里可以找到Registration Authority (RA)和 Validation Authority (VA)一个网站,例如 wikipedia在 Browser喜欢 Googl
我是 VBA 新手,刚开始学习循环。 这是我的代码: sub worksheet_change(byval target as range) application.screenupdating =
微软金融服务公司 我尝试在 Ms 团队中实现任务模块以在弹出模块中打开外部应用程序/网址。 1st,我尝试了任务模块示例代码,并在使用 ngrok 时或在 azure 上部署后出现以下错误。 错误:
现在我正在使用以下方法,但我觉得有更好的方法: data = { "foo": 5, "bar": 10} l = [] for k in data: l.append(k) l.append
A file that is given as input to the linker is called Object File. The linker produces an Image file
是否可以从我编写的驱动程序代码中对内核空间 VA 进行简单的页面遍历转换?我正在尝试使用 virt_to_phys(),但翻译对我来说看起来不正确。还有其他 API 可以做到这一点吗? 最佳答案 vi
我正在寻找将以下格式的字符串拆分为键值对数组的正则表达式。 "category: Music artist: \"Chris Martin\" album: \"A head full of drea
我即将开始开发一个大型网络应用程序。其中包含媒体(视频、音频和图像)和大量用户群。 网站的流量也可能非常高。 所以在这里我有点困惑我应该使用 jquery/jquery ui 还是 Google cl
void AppBuf(message_id_type msgID, int32 numPairs, va_list va) { int32 len = va_args(va, int32); ...
例如:当我调用 intern() 方法后用 == 运算符比较两个字符串时,它返回 true。 String name = "Wahab"; // in string literal pool Stri
我在 GCC 终端 (centos linux) 中为 ATM 项目编译以下 c 和 .h 代码时收到以下错误。请帮忙,因为我是编程新手。 validate_acc.h #ifndef _VALIDA
我是一名优秀的程序员,十分优秀!