相关疑难解决方法(0)

g ++ __FUNCTION__替换时间

任何人都可以告诉g ++何时__FUNCTION__用包含函数名称的字符串替换'macro'?它似乎可以替换它,直到它检查源代码的语法正确性,即以下将不起作用

#include <whatsneeded>
#define DBG_WHEREAMI __FUNCTION__ __FILE__ __LINE__

int main(int argc, char* argv)
{
  printf(DBG_WHEREAMI "\n"); //*
}
Run Code Online (Sandbox Code Playgroud)

因为经过预处理后使用

g++ -E test.cc
Run Code Online (Sandbox Code Playgroud)

来源看起来像

[...]

int main(int argc, char* argv)
{
  printf(__FUNCTION__ "test.cc" "6" "\n"); //*
}
Run Code Online (Sandbox Code Playgroud)

现在编译器正确抛出,因为*ed行不正确.

有没有办法强制用字符串替换前一步,以便该行正确?

难道__FUNCTION__真的毕竟是一个字符串替换?或者它是编译代码中的变量?

c++ compiler-construction string g++ c-preprocessor

8
推荐指数
1
解决办法
4777
查看次数

标签 统计

c++ ×1

c-preprocessor ×1

compiler-construction ×1

g++ ×1

string ×1