के लिए डॉक्सीजन मैं बिना सफलता के सी में नकली टेम्पलेट्स के लिए डॉक्सीजन का उपयोग करके दस्तावेज़ उत्पन्न करने का प्रयास कर रहा हूं। मुझे उम्मीद है कि किसी को पता है कि मैक्रो ट्रिकरी को डॉक्सिजन प्रीप्रोसेसर में कैसे काम करना है? मैंने भाग्य के बिना "MACRO_EXPANSION" को सक्षम करने का प्रयास कर लिया है।सी टेम्पेट इम्यूलेशन
संपादित करें: इस प्रश्न का सबसे अधिक denatured रूप होगा: "मैं प्रीप्रोसेसर निर्देश # को डॉक्सिजन कैसे संभाल सकता हूं # सी प्रीप्रोसेसर करता है?"
मैं एक फ़ोल्डर "परीक्षण" (एक बहुत काल्पनिक उदाहरण) में निम्न कोड:
templates.h
#ifndef TEMPLATES_H_
#define TEMPLATES_H_
#define CAT(X,Y) X##_##Y
#define TEMPLATE(X,Y) CAT(X,Y)
#endif // TEMPLATES_H_
test.h
#ifndef TEST_H_
#define TEST_H_
#include "templates.h"
#ifdef TEST_T
#error "TEST_T cannot be defined prior to this compilation step"
#endif
#define TEST_T uint8_t
#include "test_template.h"
#undef TEST_T
#define TEST_T uint16_t
#include "test_template.h"
#undef TEST_T
#endif // TEST_H_
test_template.h
#ifdef TEST_T
#include "templates.h"
TEST_T TEMPLATE(sum,TEST_T)(TEST_T a, TEST_T b);
#endif // ifdef TEST_T
test.c
#include "test.h"
#ifdef TEST_T
#error "TEST_T cannot be defined prior to this compilation step"
#endif
#define TEST_T uint8_t
#include "test_template.c"
#undef TEST_T
#define TEST_T uint16_t
#include "test_template.c"
#undef TEST_T
test_template.c
#ifdef TEST_T
TEST_T TEMPLATE(sum,TEST_T)(TEST_T a, TEST_T b)
{
return a + b;
}
#endif // ifdef TEST_T
मेरी Doxygen कॉन्फ़िग फ़ाइल में:
test.cfg
# Doxyfile 1.8.13
PROJECT_NAME = "Test"
OUTPUT_DIRECTORY = "docs_test"
TAB_SIZE = 3
OPTIMIZE_OUTPUT_FOR_C = YES
INPUT = "../test"
RECURSIVE = YES
MACRO_EXPANSION = YES
# Temporary to extract all without tags
EXTRACT_ALL = YES
हालांकि, योग * फ़ंक्शन के टेम्पलेट संस्करण डॉक्सिजन (.h या .c दस्तावेज़) में मौजूद नहीं हैं; उदाहरण के लिए, test.h नीचे है (हालांकि मैं भी खुश अगर यह बजाय test_template.h में दिखाया होगा):
किसी भी विचार?
Sidenote: (http://stackoverflow.com/q/28499422/694733) मैक्रो प्रवंचना कर जब [आप फ़ाइलों पर नई-पंक्तियों अनुगामी कर रखी हैं]। – user694733
मूल्यवान नोट। मैं व्यक्तिगत रूप से हमेशा आदत से बाहर एक नई लाइन (लंबी अवधि से सिस्टम से सीखा गुण) है, लेकिन यह उपरोक्त कोड स्निपेट में नहीं दिखाया जाएगा। – Squirrel