与在头文件中声明并在源文件中定义的外部数组链接时出现问题

时间:2019-04-17 16:20:39

标签: c++ linker

我需要声明一个非常大的n-d数组。它在头文件中定义,并且永不更改。不幸的是,编译主文件需要很长时间,因此我决定将其导入到自己的目标文件中。

这是头文件table.hpp:

Range("B2").Select
Selection.AutoFill Destination:=Range(Cells(2, 2), Cells(2, col_count)), Type:=xlFillDefault
Range(Cells(2, 1), Cells(2, col_count)).Interior.ColorIndex = 6
ActiveSheet.Cells(3, 2).Formula = "=IF(B$1=B$2,""Pass"",""Fail"")"
Range("B3").Select
Selection.AutoFill Destination:=Range(Cells(3, 2), Cells(3, col_count)), Type:=xlFillDefault
Range(Cells(3, 1), Cells(3, col_count)).Interior.ColorIndex = 28
Range(Cells(1, 1), Cells(1, col_count)).Interior.ColorIndex = 39

这是源文件表。cpp:

#pragma once

namespace TABLES
{
    extern const int A[10][10][10];
    extern const int B[10][10][10];
}

和我的主文件:

namespace TABLES
{
    const int A[10][10][10] = {};  // use default for brevity
    const int B[10][10][10] = {};  // use default for brevity
}

这是我的Makefile:

#include "tables.hpp"

int main()
{
    printf("%d", TABLES::A[0][0][0]);
}

tables.o编译成功,但是我在将tables.o链接到主程序时遇到问题:

CXX = clang++
CFLAGS = -std=c++17 -g -flto -Wall -Iinclude/ 
SRC = src/
INC = include/

tables.o: $(SRC)tables.cpp $(INC)tables.hpp
    $(CXX) $(CFLAGS) -c $(SRC)tables.cpp

main: main.cpp tables.o
    $(CXX) $(CFLAGS) -o main main.cpp tables.o

0 个答案:

没有答案