我正在阅读关于C/C++中内联函数的文章,来源于:http://publib.boulder.ibm.com/infocenter/comphelp/v7v91/index.jsp?topic=%2Fcom.ibm.vacpp7a.doc%2Flanguage%2Fref%2Fclrc07cplr243.htm。以下是相关代码:
输出结果如下:
inline.h:
#include<stdio.h>
extern inline void two(void){ // GNU C uses this definition only for inlining
printf("From inline.h\n");
}
main.c:
#include "inline.h"
int main(void){
void (*pTwo)() = two;
two();
(*pTwo)();
}
two.c:
#include<stdio.h>
void two(){
printf("In two.c\n");
}
输出结果如下:
From inline.h
In two.c
这段文字表明:“使用gcc语义进行内联关键字”,可以获得此输出结果。
如果其中一个版本被内联,如何决定调用two()函数的版本?
从输出中可以看出,当直接调用two()时,将调用内联版本。而当使用函数指针时,则会调用非内联版本。是否有一般规则来解决这类调用问题呢?
two.c
中的函数。 - Mats Petersson