关于 csh 中的 g++ -D

About g++ -D in csh

我有一个用于 C 代码的 csh,如下所示:

foreach i (COARSE_STATIC, COARSE_DYNAMIC, FINE_STATIC, FINE_DYNAMIC)
    foreach j (1 2 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60)
       g++ -o proj2 project2.cpp -O3 -lm -openmp -D=$i -DNUMT=$j
       ./proj2 >> OUT
     end
     echo '\n' >> OUT
end

我对 -D=$i 有一些问题,我知道它不正确,我不知道如何修改它来表达:

#define COARSE_STATIC

有谁能告诉我怎么用吗?

如果你只需要定义宏就不要放=符号。

g++ ... -D$i

此外,您在第一个 for 列表中使用逗号 , 作为分隔符,而在第二个列表中没有。第二个是正确的,您应该删除第一个中的逗号。 (否则你会尝试定义宏CORESTATIC,。)