gpt4 book ai didi

c - 先验常数计算

转载 作者:太空宇宙 更新时间:2023-11-04 05:52:39 25 4
gpt4 key购买 nike

我想定义一个常量整数作为编译期间简单的 +-* 和/操作的结果。我尝试使用 const double XMIN = .. 但这不允许在其右侧使用其他常量。所以我不能做出如下定义:

#define SEED_GRAIN 1e5
#define XMIN -0.2f
#define XMAX 0.2f
#define XLENGTH (XMAX-XMIN)
#define XRAND ((XLENGTH*SEED_GRAIN)+1)

作为随机数区间数的先验计算,我使用如下:

x = rand()%(int)XRAND;
x = pt.x/SEED_GRAIN + XMIN;

这在 Mac 上的某些 C 编译器下工作,但 Windows SDK 以下列方式提示 (int)XRAND 行:

error C2105: '--' needs l-value
error C2143: syntax error : missing ')' before 'constant'

我想所有这些都可以用常量而不是那些丑陋的编译器定义来完成,但我还没有深入了解什么时候某些东西被视为编译器的常量表达式。有人可以指导我找到干净的解决方案吗?Fwiw 我正在 matlab 中编译一个 mex 文件,正如所解释的那样,它可以在 mac 上使用标准编译器和 mex -O CFLAGS='\$CFLAGS -std=c11' main.c 但拒绝编译在带有 sdk 7.1 的 windows 下

最佳答案

原因是 (XMAX-XMIN) 将扩展为 (XMAX--0.2f) 然后 -- 被视为运算符而不是 - -0.2f

关于c - 先验常数计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35969523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com