Tôi cần cung cấp thư viện tĩnh C cho ứng dụng khách và cần có khả năng xác định cấu trúc không có sẵn. Ngày đầu đó tôi cần để có thể thực thi mã trước khi chính tại khởi tạo thư viện bằng cách sử dụng một biến toàn cầu.Ẩn định nghĩa cấu trúc trong thư viện tĩnh
Dưới đây là mã của tôi:
private.h
#ifndef PRIVATE_H
#define PRIVATE_H
typedef struct TEST test;
#endif
private.c (this should end up in a static library)
#include "private.h"
#include <stdio.h>
struct TEST
{
TEST()
{
printf("Execute before main and have to be unavailable to the user.\n");
}
int a; // Can be modified by the user
int b; // Can be modified by the user
int c; // Can be modified by the user
} TEST;
main.c
test t;
int main(void)
{
t.a = 0;
t.b = 0;
t.c = 0;
return 0;
}
Rõ ràng mã này không hoạt động ... nhưng hiển thị những gì tôi cần phải làm ... Bất kỳ ai biết làm thế nào để làm cho công việc này? Tôi google khá một chút nhưng không thể tìm thấy một câu trả lời, bất kỳ trợ giúp sẽ được đánh giá rất nhiều.
TIA!
Sử dụng một loại không đầy đủ cho tay cầm cho phép trình biên dịch để bắt lỗi loại, và tránh đúc trong các chức năng thực hiện. –
Trình biên dịch có thể _still_ bắt lỗi loại do mã thư viện của bạn hoạt động với biến được nhập chính xác. Hoặc, nếu bạn thực sự có nghĩa là loại sai được trao cho chức năng của bạn, đó là một lỗi người dùng và họ xứng đáng với tất cả những khó khăn nó sẽ mang lại :-) Như tôi đã nói, đó là _one_ cách để làm điều đó, không phải là cách duy nhất. – paxdiablo
Tại sao trên trái đất sẽ sử dụng void * và mất tất cả các loại kiểm tra? typedef struct MyHiddenStruct MyHandle; MyHandle * allocHandle(); –