C_and_CPP 板


LINE

开发平台(Platform): (Ex: Win10, Linux, ...) DOS 编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出) C 额外使用到的函数库(Library Used): (Ex: OpenGL, ...) 问题(Question): 是否能在Run time时由条件式去决定要include header file? Compilier time 我没问题. 原由是我现在开发一个tool要跨Project. 里面吃了别的部门生成的header file. 只是里面有的许多相同的define name但给不同的值. Ex: Project1.h #define inputWindow1 0x100 Project2.h #define inputWindow1 0x200 有没有类似这样这样的做法(语法是错的, 不要当我XDD) if(input == 1) #include <lib\project1.h> else #include <lib\project2.h> 补充说明(Supplement): 我google了C dynamic include header file. 但找了很久都没有解答. 大多回答#ifdef, 但这是compiler time决定. 看有没有神人遇过类似的需求. 感谢. --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 113.196.154.3
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1476169406.A.5E5.html
1F:推 Clangpp: #ifdef 就好了啊 10/11 15:21
现在code就是用#ifdef去吃. 但Run Time执行时, Project1/Project2 就要分二只档案跑了.
2F:推 nowar100: 可以考虑用 env var 或是 config 档案 10/11 15:24
谢谢, 正在研究中.
3F:推 shadow0326: 编两只程式 再写一个tool runtime决定要呼叫哪个程式 10/11 15:28
呼叫外部程式没实作过.... 或许是条路啦XDD 感谢.
4F:推 james732: 如果都是这种ID类的资料,或许可以建个表格 10/11 15:48
5F:→ james732: runtime选择就代表compile的时候两份资料都要编译进去 10/11 15:48
表格化是我想的另一条路. 这几个Header file都上万行. 但格式固定. 可以给Editor去处理. 只是现在code 在Project1已经大量引用Project1.h的define. 但表格化要处理一次#define. 一整个没头绪.
6F:→ CP64: 这种就 runtime 从外部读 要不然就把会动到的地方切开各自编 10/11 15:54
7F:→ CP64: 如果就固定不便的话就可以像楼上那样全编 执行时再传参数 10/11 15:55
8F:→ CP64: 变 10/11 15:56
有想过fprintf从外面读. 但同上回答, 现在整个头大.
9F:推 chchwy: include就是编译期的行为 怎麽可能runtime改呢 10/11 15:56
10F:→ chchwy: 一定是用某些work around去做 10/11 15:56
我就是想了好几天都无解...
11F:→ Schottky: 建表倒不是问题,现在的问题是两个 .h 定义一样的symbol 10/11 16:06
12F:→ Schottky: 要求另外两个部门改名是政治问题了 10/11 16:07
13F:→ Schottky: 所以 compile 两支程式是最省力不用碰政治的作法... 10/11 16:08
14F:→ Schottky: 此外我还担心暗藏其他问题,比如同名不同实作的function 10/11 16:10
Bingo!! 不过还好这问题都是出在同Function. 因为Spec开的不同, 所以这同名搬家问题会跟着Project跑. 新人时没想过这问题. 现在新的Project来了真的要搞死我了. compiler time build 二个tool怕有个问题. 就是user不知道那个Project对那个tool. 势必得先做个先导的tool.. call外部程式又没做过. 再google 看看吧.
15F:推 ronin728: 在程式里面塞个 Tiny C Compiler 不知道有没有用 XD 10/11 19:41
google一下没答案. 可能方向错了~ 不过感谢.
16F:推 firejox: 这感觉用dynamic load可解决 10/11 20:08
google过了, 试了一下好像还是不行. 感谢.
17F:推 CoNsTaR: 你有 a、b 两个语境要切换,那就 include 另一个 header 10/11 20:51
18F:→ CoNsTaR: ,这个 header 负责 extern 所有变数,然後把原来的两个 10/11 20:51
19F:→ CoNsTaR: header #define 改成变数,然後编成两个 dll,执行的时 10/11 20:51
20F:→ CoNsTaR: 候再选择动态连结那个就好 10/11 20:51
这个好像有点难, 我还没理解怎麽做. 最近这个Project被Pending住, 回头再看这麽做.
21F:推 steve1012: 为啥不用exec配两个编译好的就好 10/11 21:31
这个意思不太懂. 是指compiler二只来做吗? 是怕User端会有版本的问题.
22F:→ final01: 不就在包一层... 10/11 23:55
包一层?
23F:推 soheadsome: 把c写得像oo 10/12 11:47
像oo?
24F:推 TeaEEE: 这种用namespace可能容易点吧 10/12 13:31
刚google一下namespace, 晚点试看看.
25F:→ descent: 他的环境是 dos 10/12 14:01
26F:推 EdisonX: 太屌了.没注意到是 dos 环境.可以知道是什麽 compiler吗? 10/16 00:15
Watcom C
27F:→ Caesar08: dos!????? 10/17 00:07
我的测试是很硬体底层的东西, DOS管制比较少, 会比较方便. ※ 编辑: viajimmy (113.196.154.3), 10/19/2016 11:14:41







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP