我已經實現了自己的tmpnam()
函數來創建臨時文件。我用下面的定義調整這一個:C宏定義了可變長度值
/* The length of random string. In /tmp/test143276 is 143246 */
#define RND_ROUND 6
/* Used as a minimal bound produced by number generator */
#define RND_MIN 100000
/* Used as a maximum bound produced by number generator */
#define RND_MAX 1000000
正如你可以看到真正需要的宏RND_ROUND
等是衍生傳遞給數發生器。以及用於生成公式爲:
RND_MIN = 1 and [RND_ROUND-1] zeros
RND_MAX = 1 and [RND_ROUND] zeros
問:我怎麼能創造出一些宏將基於RND_ROUND
在編譯時RND_MIN
和RND_MAX
生產?
例子:
#define RND_ROUND 6
// somehow define those RND_MIN and RND_MAX
...
int32_t random = g_rand_int_range(generator, RND_MIN(RND_ROUND), RND_MAX(RND_ROUND));
你可以使用電源功能? –
你可以使用二進制模式嗎? –
嗯,通常我可以,但我認爲這不是可取的方法,因爲'RND_MIN'和'RND_MAX'在運行時永遠不會改變,因此每次調用(像'create_tmp_file'函數)計算它們會浪費資源。 – likern