爲了簡化我的代碼,我把下面的代碼片段來解釋我的問題:如何優雅地共享兩個源文件之間的const char數組?
def.h
#ifndef _DEF_H_
#define _DEF_H_
const char draw[] = "Draw on the canvas:"
#endif
circle.c
#include "def.h"
void draw_circle(void)
{
printf("%s %s", draw, "a circle.");
}
的main.c
#include "def.h"
int main(void)
{
printf("%s %s", draw, "nothing.");
}
問題是在編譯時沒有問題,但由於重新定義了const char數組,draw[]
可能會在鏈接時失敗。
如何防止此問題在兩個源文件之間共享一個常量字符數組,而無需將它們放入單個編譯單元中,方法是在main.c
的頂部添加#include"circle.c"
?
可能嗎?
除非你犯了一個錯字,否則'main.c'的頂部不需要包含'circle.c'和'def.c'。保留'def.h'並創建一個單獨的編譯單元,命名爲'def.c',就像@YuHao指出的那樣。不要忘記在def.c中包含'def.h'以避免聲明/定義不匹配的風險。 –