上下文:長時間的程序員,回到C作爲一個孩子。對於您可能會遇到的問題表示歉意。C:應用宏,不編譯
我可以將宏應用於C程序而無需編譯它嗎?
我瞭解C宏的:他們前處理您的源文件交給受編譯
我:這是我的文件
編譯:OK,讓我申請的宏得到我可以編譯的東西
編譯器:好的,應用宏,讓我們編譯這個
有沒有辦法查看真正爲編譯而傳遞的程序文件?即一種應用宏的方式,但是而不是編譯該程序。
例如,我有一個使用宏的PRIxPTR
的小程序。
#include <stdio.h>
#include <stdint.h>
//needed for the PRI*PTR Macros
#include <inttypes.h>
int main()
{
int i = 42;
int* pI = &i;
printf("iP points to address (base 16): %" PRIxPTR "\n", (uintptr_t) pI);
printf("iP points to address (base 10): %" PRIdPTR "\n", (uintptr_t) pI);
}
編譯和運行程序
$ cc main.c; ./a.out
產生以下輸出
iP points to address (base 16): 7fff545f587c
iP points to address (base 10): 140734608922748
我想看到C源,其PRIxPTR
宏實際上產生。
這似乎是可能的 - 是嗎?如果不是,我對宏的理解是不正確的?或者有什麼可以防止這種情況發生?
的https://stackoverflow.com/questions/985403/seeing-expanded-c-macros – Zakir
至少有些IDE可以擴大個人宏調用Dup的對你也是。我知道Eclipse/CDT將指針懸停在一個上時會執行此操作。請注意,如果IDE環境和選項與編譯器的環境和選項不同,則擴展可能會有所不同。 –
「我可以在不編譯它的情況下將宏應用於C程序嗎?」 - 當然。 C ** pre **處理器可以在編譯器之前運行。 – Olaf