小编Cor*_*azi的帖子

函数如何检测字符串指针与字符串文字参数?

我遇到过一个函数,它可以区分被调用

foo("bar");
Run Code Online (Sandbox Code Playgroud)

VS

const char *bob = "bar";
foo(bob);
Run Code Online (Sandbox Code Playgroud)

我想到的可能性是:

  • 字符串的地址:两个参数都位于图像的.rdata部分.如果我在同一个程序中进行两次调用,则两个调用都会收到相同的字符串地址.
  • RTTI:不知道如何使用RTTI来检测这种差异.

我能想到的唯一可行的例子是:

void foo(char *msg)
{
    printf("string literal");
}

void foo(const char *&msg)
{
    printf("string pointer");
}

foo("bar");                 // "string literal"

const char *soap = "bar";
foo(soap);                  // "string pointer"
Run Code Online (Sandbox Code Playgroud)

我无法访问函数的代码,头文件中的声明只显示了一个函数声明.

c++ string literals detect

2
推荐指数
1
解决办法
2547
查看次数

标签 统计

c++ ×1

detect ×1

literals ×1

string ×1