为什么m4使用两个不同的字符作为引号?

时间:2017-06-02 20:13:48

标签: linux m4

在几乎每种语言中,引用字符串都很简单 - 你在字符串之前放一些东西,然后在字符串末尾放置相同的东西(可能是镜像的),例如:

if($_POST["submit"]=="save")
{
    $fname = $_POST["fname"];
    $lname = $_POST["lname"];
    $gender = $_POST["gender"];

    mysqli_connect("localhost","root","");
    mysqli_select_db("test2");

    $s = "insert into contact(fname,lname,gender) values('".$fname."','".$lname."','".$gender."')";

    if(mysqli_query($s))
        echo "record save";
    else
        echo mysqli_error();
}

m4宏处理器虽然不同,因为字符串是使用反引号和单引号引用的,如下所示:

"string"
'string'
R"(string)"

我的问题是:这种方法是否有任何技术上的理由,还是只是作者创造力的表达?

1 个答案:

答案 0 :(得分:2)

引用Wikipedia,它与控制字符串中的宏扩展有关:

  

与大多数语言不同,m4中的字符串使用反引号(`)引用   作为起始分隔符,并以撇号(')作为结束分隔符。   使用单独的起始和结束分隔符允许   在字符串中任意嵌套引号,允许罚款   对宏观扩张如何以及何时发生的控制程度   字符串的不同部分。