C程序中设置的预处理器指令值

Posted

技术标签:

【中文标题】C程序中设置的预处理器指令值【英文标题】:Pre-processor Directive value set in the C program 【发布时间】:2012-06-26 19:23:56 【问题描述】:

我想定义类似的东西

#define memoryAddress
main()

    bla bla bla;
    memory = endAddress- startAddress;
    #memoryAddress = memory;

是否有可能/有效的方式来初始化预处理器指令? 基本上,如果需要,我想使用这个特定的指令来更新新的内存地址。例如:如果它是 C 代码中的变量,我会这样做

if(memoryAddress != memory)
memoryAddress=memory

但由于我想将此 memoryAddress 用作预处理器指令,因此我想知道执行上述代码的正确方法。所以我将在编译过程开始之前为指令设置一个默认地址,但稍后我想更新它。

【问题讨论】:

不,它无效。你能解释一下你想做什么吗? 【参考方案1】:

使用全局变量并使用默认值对其进行初始化。然后你可以在运行时更改它

【讨论】:

我打算使用它,但我只是想知道是否有办法做到这一点。 正如上面提到的其他人:不,预处理指令是不可能的【参考方案2】:

预处理器指令由预处理器评估,它发生在编译之前。 所以你试图做的(用编译时而不是编译前已知的东西给指令赋值)是不可能的。

【讨论】:

以上是关于C程序中设置的预处理器指令值的主要内容,如果未能解决你的问题,请参考以下文章

来自 C++ 代码的预处理器指令 (_VARIADIC_MAX)

C语言:预处理器

Objective c中不同类型屏幕的预处理器指令?

C 基础 - 预处理器与C库

预处理器指令反射注入

C ++中的宏指令和预处理器指令有啥区别[重复]