如何将宏参数与另一个整数变量一起传递给宏函数?
#define SUM(X, Y, Z) X + Y + Z
#define FOO 1, 2
void print(int a, int b)
{
printf("Sum: %d", a + b);
}
int main(void)
{
// Normal function works as expected
print(FOO);
// Macro function not working
int a = 3;
printf("\nMacro Sum: %d", SUM(FOO, a));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我期望输出是:
Sum: 3
Macro Sum: 6
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
main.c:18:41: error: macro "SUM" requires 3 arguments, but only 2 given
printf("\nMacro Sum: %d", SUM(FOO, a));
Run Code Online (Sandbox Code Playgroud) 操作系统平台和发行版:Ubuntu 17.10
从(源代码或二进制文件)安装的 TensorFlow:源代码
TensorFlow 版本:r1.5
Python版本:2.7.14
巴泽尔版本:0.9
GCC/编译器版本:5.4
CUDA/cuDNN 版本:CUDA 8.0 cuDNN 6
GPU型号和内存:NVidia Geforce GTX 1080Ti 11GB
重现的确切命令:
bazel build --config=opt --config=cuda
--cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" --verbose_failures=1 //tensorflow/tools/pip_package:build_pip_package
Run Code Online (Sandbox Code Playgroud)
错误:
ERROR: /home/deepinsightlabs/.cache/bazel/_bazel_deepinsightlabs/6216f77445f5abd83461d60d9c399c02/external/flatbuffers/BUILD:86:1: C++ compilation of rule '@flatbuffers//:flatc' failed (Exit 1): crosstool_wrapper_driver_is_not_gcc failed: error executing command
(cd /home/deepinsightlabs/.cache/bazel/_bazel_deepinsightlabs/6216f77445f5abd83461d60d9c399c02/execroot/org_tensorflow && \
exec env - \
LD_LIBRARY_PATH=:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64 \
PATH=/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/deepinsightlabs/bin \
PWD=/proc/self/cwd \
external/local_config_cuda/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc -U_FORTIFY_SOURCE '-D_FORTIFY_SOURCE=1' -fstack-protector -fPIE -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer -g0 -O2 -DNDEBUG -ffunction-sections -fdata-sections -g0 -DGEMMLOWP_ALLOW_SLOW_SCALAR_FALLBACK '-march=native' '-std=c++11' -g0 -MD -MF bazel-out/host/bin/external/flatbuffers/_objs/flatc/external/flatbuffers/src/idl_gen_js.d '-frandom-seed=bazel-out/host/bin/external/flatbuffers/_objs/flatc/external/flatbuffers/src/idl_gen_js.o' …Run Code Online (Sandbox Code Playgroud) 例如,如果我有一个列表如下:
[3, 3, 3, 3, 3, 3, 100, 1, 1, 1, 1, 1, 1, 200, 3, 3, 3, 100, 1, 1, 1]
Run Code Online (Sandbox Code Playgroud)
如何删除重复的元素并表示相同的元素,然后是重复的次数?示例输出:
[3, 6, 100, 1, 6, 200, 3, 3, 100, 1, 3]
Run Code Online (Sandbox Code Playgroud)
其中3重复6次...... 1重复6次......依此类推