










#include<stdbool.h> #include<stdio.h> #include<stdint.h> typedef struct tagTest { float f1; float f2; bool b3; }TEST_T; void test(TEST_T* p) { p->f1 = 50.0; p->f2 = 80.0; p->b3 = false; } int add(int a, int b) { return a + b; } unsigned int address[100]; #define FUNCTION_TYPEDEF(name, returntype, ...) typedef returntype (*name##_FP)(__VA_ARGS__); //函数指针通用声明 FUNCTION_TYPEDEF(Test, void, ...)//定义函数指针 #define Test(...) ((##Test##_FP)((unsigned int*)(BASE_ADDR+address[0])))(__VA_ARGS__)//定义函数调用 FUNCTION_TYPEDEF(AddTest, int, int, int)//定义函数指针 #define AddTest(...) ((##AddTest##_FP)((unsigned int*)(BASE_ADDR+address[1])))(__VA_ARGS__)//定义函数调用 int main() { char* BASE_ADDR = 0; address[0] = (unsigned int)test; address[1] = (unsigned int)add; TEST_T t = {0}; Test(&t); printf("t.f1 = %f\n", t.f1); printf("add result = %d\n", AddTest(5, 10)); return 0; }

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。