如何构建此宏
How to build this macro
以下代码
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
#include <time.h>
#define N 100
#define tam atoi(getenv("tam"))
#if tam > 0
#endif
给出这个错误
testec99.c:6:17:错误:标记"("之前缺少二进制运算符#定义tam atoi(getenv("tam"((^testec99.c:7:5:注意:在宏"tam"的扩展中#如果tam>0
但如果我删除#if,那么如果"tam"不是数组的维度,它就会正确运行。所以我需要得到一个环境变量的N值。有什么方法可以概括这个问题吗?
预处理器在编译时运行(甚至在编译之前(。
所以
#if tam > 0
不评估的结果
atoi(getenv("tam"))
但只是做了一个文本替换。
评估指令
#if atoi(getenv("tam"))> 0
对于预处理器来说没有意义,因此会出现错误消息。
CCD_ 1是指在运行时进行评估。预处理器实际上不会做你在这里想要实现的事情。
"有什么方法可以解决这个问题?">
是的,您可以使用编译器的-D
选项来解析$tam
环境值(例如,对于GCC工具链(:
g++ -Dtam=$tam ...
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 无法在 CLion 中构建 C++ 项目
- 函数向量_指针有不同的原型,我可以构建一个吗
- 如何使用ndk-build.cmd构建Android.so文件
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 无法使用Qt Creator在Windows中构建yaml-cpp
- 构建一个由C和C++文件组成的库
- llvm构建器向基本块添加终止符
- FLTK 2.0构建和演示,适用于VS2019的2011年左右的代码库
- 如何跨平台将二进制资源构建到程序中?
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- Arch Linux.AUR 包 mysql 不能用 makepkg 构建.错误:构建 () 中出现故障
- 使用 Unity 构建加快C++构建速度,并减少标头依赖项
- 使用Bazel构建系统构建具有循环依赖性的C++代码
- 如何在 qtcreator for MAC 中构建.app构建
- 在Windows上使用SSL和预构建Boost构建Mongo-Cpp驱动程序
- Qt保持构建共享构建无论我选择什么选项