【问题标题】:define without a # in front of it in C [closed]在C中定义前面没有# [关闭]
【发布时间】:2017-11-03 18:30:14
【问题描述】:

C 代码中的“定义”前面没有# 是什么意思?比如这两行有什么区别:

define retadd "\x9f\x45\x3a\x77"
#define port 110

我在此处找到的代码中发现了这一点: https://www.exploit-db.com/raw/643/

【问题讨论】:

  • 我认为这是代码中的错误。
  • 显然是一个错字。如果您查看使用情况,如果您像其他所有内容一样 #defined 它会起作用
  • 或者,更确切地说,它是一种安全功能,因此非 c 精通的人无法轻易使用该漏洞。
  • 是否已经像 #define define #define 那样“定义”了?只是一个想法......但我同意这可能是一个错字
  • @Grantly:不,你不能那样做。 # 运算符将其参数字符串化,并且它只能在类似函数的宏中使用。

标签: c syntax


【解决方案1】:

这不是标准 C:这是肯定的。

这可能是编译器特定的东西或源代码中的错误。

【讨论】:

  • 只是为了扩展你所说的:我想知道,“也许你可以在没有# 的情况下定义一个预处理器宏,这就是上面发生的事情?”但答案是否定的:stackoverflow.com/a/8289287/1462295
【解决方案2】:

define 没有前导 # 只是另一个标识符,在这种情况下将是一个语法错误(它不是声明说明符或类型名称,这是编译器当时所期望的)。那个代码一定是错字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多