[问题] 跨档案 #define 的一个小问题

楼主: qas612820704 (Lego)   2014-07-24 01:34:33
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
如题
node.h node.c
作者: soheadsome (师大狗鼻哥)   2014-07-24 01:57:00
#ifndef #define
作者: Killercat (杀人猫™)   2014-07-24 01:59:00
keyword : Include Guard <==查一下这个关键字另外别学坏用#pragma once, 这个M$ only 别用这个....刚查了一下 GCC跟clang居然支援了 真诡异
作者: scwg ( )   2014-07-24 02:20:00
queue.c includes queue.h, which includes node.h 怎么会看不到 DATATYPE 呢? 除非有奇怪的 preprocessor directives不然 #include 只是单纯的内文展开, 多重 include 会统统拉到最上层
作者: Killercat (杀人猫™)   2014-07-24 02:38:00
诶,我发现我误解元po的问题了,请跳过我 XD
作者: legendmtg (CLANNAD)   2014-07-24 09:53:00
#pragma once应该是各大编译器都有支援了而且效率似乎比较好 所以也有人是建议使用
作者: azureblaze (AzureBlaze)   2014-07-24 10:10:00
once没进标准是因为"同个档案"在某些平台难以定义inclusion guard若编译器有作特别处理效率其实差不多
作者: Killercat (杀人猫™)   2014-07-24 11:23:00
其实gcc -E出来应该结果都一样...会有效能差嘛别告诉我gcc expand macros会多花几个毫秒... XD
作者: azureblaze (AzureBlaze)   2014-07-24 11:27:00
once可以连开档都省略掉 档案够多会差一点点XD
作者: scwg ( )   2014-07-25 03:59:00
不管是 Eclipse 还是去 command line 用 gcc, 出错想找问题一定得看错误讯息. 真的是DATATYPE的问题吗? 还是哪里少分号?

Links booklink

Contact Us: admin [ a t ] ucptt.com