如何为GCC添加/指定预定义的宏?

时间:2017-08-16 09:10:09

标签: c gcc macros

重要的是:-D不适用于此。

是否有可能以某种动态方式声明出现在每个编译中的宏(很像预定义的宏)(意味着我懒得重新编译gcc)?还是我必须重新编译我的gcc?我是否应该重新编译,如何指定预定义的宏?

2 个答案:

答案 0 :(得分:3)

您可以考虑提供一些(或改进您的)spec file

您可以修补GCC源代码的gcc/c-family/c-cppbuiltin.c file

您可以code然后use定义其他预定义宏的GCC插件。

但我确信这是一个非常糟糕的主意;我建议将显式一些-D标志传递给您的编译器;你的问题和某些XY problem一样严重。您需要激励您的问题

您可以组织PATH variable并适当添加一些gcc shell脚本,添加-DMACRO选项并明确调用例如/usr/bin/gcc $conn = your connection; $result = mysqli_query($conn,"SELECT * FROM users WHERE email = '$email'") or exit(mysqli_error()); //check for duplicates $num_rows = mysqli_num_rows($result); //number of rows where duplicates exist if($num_rows == 0) { //if there are no duplicates...insert $sql = "INSERT INTO users (name, email, tel, gift, formName, formEmail, formEmirate, birthday, date) VALUES ('$name', '$email', '$tel','$gift', '$formName', '$formEmail', '$formEmirate','$birthday',CURRENT_TIMESTAMP )"; if (!mysqli_query($conn,$sql)) { die('Error: ' . mysqli_error()); } } 用它。

答案 1 :(得分:1)

在Linux上你可以

  • 使用别名:

    alias gcc="gcc -DMACRO1 -DMACRO2"
    
  • 将旧/usr/bin/gcc复制到/usr/bin/gcc.original。制作您自己的shell脚本并将其命名为/usr/bin/gcc,其中包含

    exec /usr/bin/gcc.original -DMACRO1 -DMACRO2 "$@"