2016-05-20 18 views
10

Attualmente sto lavorando con una vecchia libreria C (realizzato nei primi anni '90) e la seguente dichiarazione di funzione mi ha fatto confuso:funzione Insolito C dichiarazione

#define bland_dll 
typedef unsigned short int usint; 
typedef unsigned char uchar; 

int bland_dll Read_Chan (usint channel); 

Qual è la bland_dll fare tra il nome e della funzione è il tipo di ritorno?

Grazie per le vostre luci!

+5

http://stackoverflow.com/questions/13892191/empty-macro-definition-in-c –

risposta

7

sua una macro che definisce vuoto, in modo che quando pre-elaborato si scopre di essere:

int Read_Chan (usint channel); 

Ho il sospetto, è un retaggio dai primi giorni quando si dichiara tipi DLL di collegamento, come pascal che ha un significato speciale per il linker, per esempio. Un altro esempio è __cdecl.

per il completamento del idiosincrasie dei meccanismi compilatore di collegamento:

  1. __stdcall
  2. __fastcall
  3. __cdecl

Ognuno di loro influenzato come il linker ha gestito la decorazione nome al momento della compilazione, e potrebbe aver causato connessioni con collegamenti a DLL di terze parti a causa dei diversi interruttori orari di collegamento.

Modifica: Grazie per la correzione.