C++ Compile Warning

//File: string.cpp
#include <iostream>

using namespace std;

void show_string(char *str)
{
    print_str("hello");
    cout << str << endl;
}

int main(int argc, char *argv[])
{
    show_string("Hello, world.");
    return 0;
}

string.cpp:13:22: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

//Fix method
re-define function [show_string] to [void show_string(const char *str)].
编译标志(compile flags)是在编译C++代码时传递给编译器的选项,用于指定编译器的行为和生成的可执行文件的特性。通过设置编译标志,我们可以控制编译器的优化级别、警告级别、目标平台等。 以下是一些常见的C++编译标志: 1. `-O`:优化级别标志,用于指定编译器的优化级别。常见的优化级别包括`-O0`(无优化)、`-O1`(基本优化)、`-O2`(更高级别的优化)和`-O3`(最高级别的优化)。 2. `-Wall`:警告标志,用于开启编译器的警告信息。`-Wall`会开启大部分的警告信息,帮助我们发现潜在的问题。 3. `-std`:C++标准标志,用于指定编译器使用的C++标准。例如,`-std=c++11`表示使用C++11标准进行编译。 4. `-march`:目标平台标志,用于指定生成的可执行文件的目标平台。例如,`-march=native`表示使用当前机器的最佳优化。 5. `-I`:头文件路径标志,用于指定头文件的搜索路径。例如,`-I/path/to/include`表示将`/path/to/include`添加到头文件搜索路径中。 6. `-L`:库文件路径标志,用于指定库文件的搜索路径。例如,`-L/path/to/lib`表示将`/path/to/lib`添加到库文件搜索路径中。 7. `-l`:链接库标志,用于指定需要链接的库文件。例如,`-lmylib`表示链接名为`libmylib.so`或`libmylib.a`的库文件。 8. `-D`:预处理宏定义标志,用于定义预处理宏。例如,`-DDEBUG`表示定义一个名为`DEBUG`的宏。 下面是一个示例,演示了如何使用编译标志编译C++代码: ```shell g++ -O2 -Wall -std=c++11 -I/path/to/include -L/path/to/lib -lmylib -DDEBUG main.cpp -o main ``` 这个命令将使用`g++`编译器,将`main.cpp`文件编译为可执行文件`main`,并使用`-O2`优化级别、`-Wall`警告标志、`-std=c++11`C++标准、`-I/path/to/include`头文件路径、`-L/path/to/lib`库文件路径、`-lmylib`链接库、`-DDEBUG`预处理宏定义。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值