C ';已定义但未使用';警告和正确的代码样式

C ';已定义但未使用';警告和正确的代码样式,c,C,我正在编写一个简单的web服务器来处理类的HTTP 1.1请求。因此,我定义了一些在程序中经常使用的“stock”字符串,例如 static char* bad_response = // 400, BAD request "HTTP/1.1 400 Bad Request\n"; static char* bad_req_body = // 400 error "<html><body>\n<h2>Malformed Request<

我正在编写一个简单的web服务器来处理类的HTTP 1.1请求。因此,我定义了一些在程序中经常使用的“stock”字符串,例如

static char* bad_response = // 400, BAD request
    "HTTP/1.1 400 Bad Request\n";

static char* bad_req_body = // 400 error
    "<html><body>\n<h2>Malformed Request</h2>\n"
    "Your browser sent a request I could not understand.\n</body></html>\n";
static char*bad_response=//400,请求错误
“HTTP/1.1 400错误请求\n”;
静态字符*bad_req_body=//400错误
“\n格式化的请求\n”
“您的浏览器发送了一个我无法理解的请求。\n\n”;
这些字符串在.h文件中定义,但仅在.c文件中使用,导致警告“'bad_response'已定义但未使用”


所以我的问题是,有没有办法标记这些变量,这样它们就不会发出特别的警告?或者,将这些变量移动到.c文件中是正确的编码方式吗?

将字符串放在.c文件中?

字符串应该放在.c文件中,因为它们在.c文件中使用。换句话说,将它们放置在预期使用的位置

我建议你也看看答案,它实际上表明你也可以使用关键字
extern


标记变量,使其不会收到警告?

如果要完全禁用此警告,请参阅答案。如您所说,要标记变量,可以执行以下操作:

static char* bad_response __attribute__((unused)) = "400, BAD request";

使用哪一个?


我强烈建议使用第一种方法,因为第二种方法会降低代码的可读性(有些可能会被额外的代码弄糊涂)。如果禁用所有变量的警告,则会失去有用警告的帮助,而在其他情况下,该警告可能会拯救您。

将字符串放在.c文件中?

字符串应该放在.c文件中,因为它们在.c文件中使用。换句话说,将它们放置在预期使用的位置

我建议你也看看答案,它实际上表明你也可以使用关键字
extern


标记变量,使其不会收到警告?

如果要完全禁用此警告,请参阅答案。如您所说,要标记变量,可以执行以下操作:

static char* bad_response __attribute__((unused)) = "400, BAD request";

使用哪一个?


我强烈建议使用第一种方法,因为第二种方法会降低代码的可读性(有些可能会被额外的代码弄糊涂)。如果禁用所有变量的警告,则会失去有用警告的帮助,而在其他情况下,该警告可能会拯救您。

将字符串放在.c文件中?

字符串应该放在.c文件中,因为它们在.c文件中使用。换句话说,将它们放置在预期使用的位置

我建议你也看看答案,它实际上表明你也可以使用关键字
extern


标记变量,使其不会收到警告?

如果要完全禁用此警告,请参阅答案。如您所说,要标记变量,可以执行以下操作:

static char* bad_response __attribute__((unused)) = "400, BAD request";

使用哪一个?


我强烈建议使用第一种方法,因为第二种方法会降低代码的可读性(有些可能会被额外的代码弄糊涂)。如果禁用所有变量的警告,则会失去有用警告的帮助,而在其他情况下,该警告可能会拯救您。

将字符串放在.c文件中?

字符串应该放在.c文件中,因为它们在.c文件中使用。换句话说,将它们放置在预期使用的位置

我建议你也看看答案,它实际上表明你也可以使用关键字
extern


标记变量,使其不会收到警告?

如果要完全禁用此警告,请参阅答案。如您所说,要标记变量,可以执行以下操作:

static char* bad_response __attribute__((unused)) = "400, BAD request";

使用哪一个?


我强烈建议使用第一种方法,因为第二种方法会降低代码的可读性(有些可能会被额外的代码弄糊涂)。如果禁用所有变量的警告,则会失去有用警告的帮助,在其他情况下可能会为您节省时间。

这里的问题是
static
关键字提供变量的内部链接,从而为每个翻译单元生成变量的副本。您很可能希望它是
extern
,并在一个翻译单元中定义它。或者,按照另一个答案的建议,将其移动到
.c
文件中。

这里的问题是
static
关键字提供变量的内部链接,从而为每个翻译单元生成变量的副本。您很可能希望它是
extern
,并在一个翻译单元中定义它。或者,按照另一个答案的建议,将其移动到
.c
文件中。

这里的问题是
static
关键字提供变量的内部链接,从而为每个翻译单元生成变量的副本。您很可能希望它是
extern
,并在一个翻译单元中定义它。或者,按照另一个答案的建议,将其移动到
.c
文件中。

这里的问题是
static
关键字提供变量的内部链接,从而为每个翻译单元生成变量的副本。您很可能希望它是
extern
,并在一个翻译单元中定义它。或者,按照另一个答案的建议,将其移动到
.c
文件中。

后者不属于标题。实际上,只需将它们插入到它们的使用站点即可。对于后者,它们不属于标题。实际上,只需将它们插入到它们的使用站点即可。对于后者,它们不属于标题。实际上,只需将它们插入到它们的使用站点即可。对于后者,它们不属于标题。实际上,只要插入